【问题标题】:Cannot resolve method setOnChildClickListener无法解析方法 setOnChildClickListener
【发布时间】:2015-12-09 22:01:54
【问题描述】:

这是我的整个活动代码,如果需要,我也可以发布我的 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,任何帮助将不胜感激

【问题讨论】:

  • 尝试在您的子视图中添加android:descendantFocusability="blocksDescendants"
  • 还是一样的结果
  • 你有没有吐司之类的东西要知道它没有起火?
  • 没有因为出现以下错误导致无法运行Cannot resolve method setOnChildClickListener(anonymous android.widget.ExpendableListView.OnChildClickListener)
  • 在你的onCreate() 添加这个:isChildSelectable(true);

标签: java android arraylist expandablelistview


【解决方案1】:

简而言之,RecyclerView 不支持OnChildClickListener,因为它不打算直接替代ListView

如需了解原因,请查看this stackoverflow answer

您应该改为在您的 ViewHolder 类中实现 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
    }
}

【讨论】:

  • 很抱歉这么晚才问这个问题,但是现在在你们班上,我怎么能打电话给特定的孩子,因为我还没有找到任何方法
  • 不知道你说的“调用特定的孩子”是什么意思,但是你可以使用getAdapterPosition()找到被点击的视图的索引。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-15
  • 2015-06-10
  • 2019-08-28
  • 2019-10-10
  • 2019-06-13
  • 2017-11-13
相关资源
最近更新 更多