2011-06-03 99 views
0
public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { 
    View v = null; 
    if(convertView != null) 
     v = convertView; 
    else 
     v = inflater.inflate(R.layout.child_row, parent, false); 
    Color c = (Color)getChild(groupPosition, childPosition); 
    TextView color = (TextView)v.findViewById(R.id.childname); 
    if(color != null) 
     color.setText(c.getColor()); 
    TextView rgb = (TextView)v.findViewById(R.id.rgb); 
    if(rgb != null) 
     rgb.setText(c.getRgb()); 
    // CheckBox cb = (CheckBox)v.findViewById(R.id.check1); 
    // cb.setChecked(c.getState()); 
    Button btnPlay=(Button)v.findViewById(R.id.Play); 
    Button btnDelete=(Button)v.findViewById(R.id.Delete); 
    Button btnEmail=(Button)v.findViewById(R.id.Email); 
    btnPlay.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 
      Log.i("TEST ", "play btn cliked"); 

      Intent i=new Intent(this,FindFilesByType.class);//THIS IS NOT ALLOWED IN MY CODE 

     } 
    }); 

    return v; 
} 

在上面的代码中,我写了我的adapterclass。 作为孩子,我的可解释列表中有3个按钮。 我想呼吁按钮的单击事件另一个Java类, 所以,当我使用:android扩展列表需要帮助

Intent i=new Intent(this,FindFilesByType.class); 

我得到这个:

The constructor Intent(new View.OnClickListener(){}, Class<FindFilesByType>) is undefined 
Remove arguments to match 'Intent' 

什么是错的我在做什么?

回答

0
public View getChildView(int groupPosition, int childPosition, 
     boolean isLastChild, View convertView, ViewGroup parent) { 
    View v = null; 
    if (convertView != null) 
     v = convertView; 
    else 
     v = inflater.inflate(R.layout.child_row, parent, false); 
    Rington c = (Rington) getChild(groupPosition, childPosition); 
    TextView color = (TextView) v.findViewById(R.id.childname); 
    if (color != null) 
     color.setText(c.getColor()); 
    TextView rgb = (TextView) v.findViewById(R.id.rgb); 
    if (rgb != null) 
     rgb.setText(c.getRgb()); 

    Button btnPlay = (Button) v.findViewById(R.id.Play); 
    Button btnDelete = (Button) v.findViewById(R.id.Delete); 
    Button btnEmail = (Button) v.findViewById(R.id.Email); 
    btnPlay.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 
      //code 

     } 
    }); 
    btnDelete.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 
      //code 

     } 
    }); 
    btnEmail.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 
      //code 
     } 
    }); 

    return v; 
} 

这上面methos到适配器类,这是完全正常工作的代码我:)

1

this对象在你的意图构造函数是匿名OnClickListener类实例,而不是当前的上下文。你需要做的就是用当前上下文在构造函数中,如:

Intent i = new Itent(getContext(), FindFilesByType.class); 
+0

不,这不是为我工作的感谢:) – Android 2011-06-03 04:36:48

+0

最后我得到了我所用btnPlay.setOnClickListener解决方案(新景观.OnClickListener(){ \t \t \t \t \t \t @覆盖 \t \t \t公共无效的onClick(查看为arg0){ \t \t \t \t Log.i(“TEST”,“play btn cliked”); \t \t \t \t \t \t \t意图I =新意图(上下文,PlayingActivity.class); \t \t \t context.startActivity(i); \t \t \t \t \t \t \t} \t \t});这是工作 – Android 2011-06-03 04:36:56

1

在开始时,的onCreate之前创建intance变量()方法类似

public static InstanceTest instance; 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    instance=this; 
} 

之称的孩子变量点击事件

public void onClick(View arg0) { 
    Intent i=new Intent(instance,FindFilesByType.class);//This time it will be allowed 
} 

希望这可以帮助。