无法解析方法 setOnChildClickListener
Cannot resolve method setOnChildClickListener
这是我的全部 activity 代码,如果需要的话我也可以 post 我的 xml。
public class Main_Activityextends AppCompatActivity {
private RecyclerView recyclerview;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
recyclerview = (RecyclerView) findViewById(R.id.recyclerview);
recyclerview.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false));
List<ExpandableListViewAdapter.Item> data = new ArrayList<>();
data.add(new ExpandableListViewAdapter.Item(ExpandableListViewAdapter.HEADER, "Terms of usage"));
data.add(new ExpandableListViewAdapter.Item(ExpandableListViewAdapter.CHILD, "never eat"));
data.add(new ExpandableListViewAdapter.Item(ExpandableListViewAdapter.CHILD, "bluhhhhh"));
recyclerview.setAdapter(new ExpandableListViewAdapter(data));
recyclerview.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {
@Override
public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) {
return true;
}
});
代码在没有 clickListener
的情况下也能完美运行,但我希望在单击数组的某个子项时发生一个动作,但现在它显示 Cannot resolve method setOnChildClickListener(anonymous android.widget.ExpendableListView.OnChildClickListener)
虽然 recycleView
是我的Adapter
,我们将不胜感激
简而言之,RecyclerView
不支持 OnChildClickListener
,因为它不打算直接一对一地替代 ListView
。
有关原因的详细解释,请查看 this Whosebug answer
您应该改为在 ViewHolder
class 中实现 View.OnClickListener
,如下所示:
public static class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
// Your view fields here
public ViewHolder(View itemLayoutView) {
super(itemLayoutView);
// Assign view fields
itemLayoutView.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// Do your thing here
}
}
这是我的全部 activity 代码,如果需要的话我也可以 post 我的 xml。
public class Main_Activityextends AppCompatActivity {
private RecyclerView recyclerview;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
recyclerview = (RecyclerView) findViewById(R.id.recyclerview);
recyclerview.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false));
List<ExpandableListViewAdapter.Item> data = new ArrayList<>();
data.add(new ExpandableListViewAdapter.Item(ExpandableListViewAdapter.HEADER, "Terms of usage"));
data.add(new ExpandableListViewAdapter.Item(ExpandableListViewAdapter.CHILD, "never eat"));
data.add(new ExpandableListViewAdapter.Item(ExpandableListViewAdapter.CHILD, "bluhhhhh"));
recyclerview.setAdapter(new ExpandableListViewAdapter(data));
recyclerview.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {
@Override
public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) {
return true;
}
});
代码在没有 clickListener
的情况下也能完美运行,但我希望在单击数组的某个子项时发生一个动作,但现在它显示 Cannot resolve method setOnChildClickListener(anonymous android.widget.ExpendableListView.OnChildClickListener)
虽然 recycleView
是我的Adapter
,我们将不胜感激
简而言之,RecyclerView
不支持 OnChildClickListener
,因为它不打算直接一对一地替代 ListView
。
有关原因的详细解释,请查看 this Whosebug answer
您应该改为在 ViewHolder
class 中实现 View.OnClickListener
,如下所示:
public static class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
// Your view fields here
public ViewHolder(View itemLayoutView) {
super(itemLayoutView);
// Assign view fields
itemLayoutView.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// Do your thing here
}
}