无法调用所选子项RecycleView

时间:2015-09-14 13:18:03

标签: android onclick android-recyclerview android-viewholder

我在android中创建了一个可扩展视图,RecycleView而不是ListView。起初我遇到了一些问题,但现在一切正常。所以现在我尝试从组列表中选择一个孩子并使用clickListener进行一些操作。我尝试了OnChildClickListener,但这不适用于RecycleView。对我有用的唯一代码是:

            textviewitem.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Log.d("child", "works");

                }
            });

虽然textviewitem是:Context context = parent.getContext(); final TextView textviewitem= new TextView(context);

现在事情就是这样,我无法告诉哪个孩子被点击了,这是一个问题。 顺便说一句,我搜索了很多,看到了许多相关的链接,但我找不到答案。 如果您希望我发布我的整个ViewHolder,请说出来。

修改

这是我的整个ViewHolder:

@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int type){
    View view = null;
    Context context = parent.getContext();
    float dp = context.getResources().getDisplayMetrics().density;
    int subItemPaddingLeft = (int) (18 * dp);
    int subItemPaddingTopAndBottom = (int) (5 * dp);

    switch (type) {
        case HEADER:
            LayoutInflater inflater = (LayoutInflater) parent.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            view = inflater.inflate(R.layout.list_header, parent, false);
            ListHeaderViewHolder header = new ListHeaderViewHolder(view);
            return header;
        case CHILD:
            final TextView textviewitem = new TextView(context);
            textviewitem.setPadding(subItemPaddingLeft, subItemPaddingTopAndBottom, 0, subItemPaddingTopAndBottom);
            textviewitem.setTextColor(0x88000000);
            textviewitem.setLayoutParams(
                    new ViewGroup.LayoutParams(
                            ViewGroup.LayoutParams.MATCH_PARENT,
                            ViewGroup.LayoutParams.WRAP_CONTENT));

            textviewitem.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {
                    Log.d("child", "works");

                }
            });

            return new RecyclerView.ViewHolder(textviewitem) {
            };
    }
    return null;

}

1 个答案:

答案 0 :(得分:1)

您可以在onBindViewHolder中设置点击监听器,也可以根据数据项具有的唯一内容(即索引号,ID等)在TextView上设置标签。

onBindViewHolder中,你可以: viewHolder.itemView.setTag(myKey)