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;
}
在上面的代码中,我编写了我的适配器类。 作为孩子,我的可解释列表中有3个按钮。 我想在按钮的click事件上调用另一个Java类, 所以,当我使用时:
Intent i=new Intent(this,FindFilesByType.class);
我得到了这个:
The constructor Intent(new View.OnClickListener(){}, Class<FindFilesByType>) is undefined
Remove arguments to match 'Intent'
我在做什么有什么问题?
答案 0 :(得分:1)
Intent构造函数中的this
对象是匿名OnClickListener类实例,而不是当前上下文。您需要做的是在该构造函数中使用当前上下文,如:
Intent i = new Itent(getContext(), FindFilesByType.class);
答案 1 :(得分:1)
在开始时,在onCreate()方法之前创建实例变量,如
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
}
希望这可以提供帮助。
答案 2 :(得分: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;
}
上面的这个方法进入适配器类这对我来说是完全正常工作的代码:)