如何在cardview点击时重新加载父回收查看

时间:2018-04-18 13:53:02

标签: android android-recyclerview

我在RecyclerView中有一个CardView项目列表。我需要将RecyclerView绑定到CardView Click上的子项列表。这样我就可以使用相同的RecyclerView来显示子项。有什么方法可以做到吗?

public static class BoxViewHolder extends RecyclerView.ViewHolder {
    CardView cv;
    TextView boxID;
    TextView boxTitle;
    TextView boxDescription;

    BoxViewHolder(View itemView) {
        super(itemView);
        cv = (CardView)itemView.findViewById(R.id.mycard);
        boxID = (TextView)itemView.findViewById(R.id.box_id);
        boxTitle = (TextView)itemView.findViewById(R.id.box_title);
        boxDescription = (TextView)itemView.findViewById(R.id.box_description);
        itemView.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View view)  {
                // view.getParent()
                /*  What to do ??? */
            }
        });
    }
}

1 个答案:

答案 0 :(得分:1)

public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

    ViewHolder(View itemView) {
        super(itemView);
        itemView.setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        if (mClickListener != null)
            mClickListener.onItemClick(view, getAdapterPosition());
    }
}

侦听器是自定义的,就像在适配器类中实例化的那样

public void setClickListener(AdapterClass.ItemClickListener itemClickListener) {
    this.mClickListener = itemClickListener;
}

// parent activity will implement this method to respond to click events
public interface ItemClickListener {
    void onItemClick(View view, int position);
}

当你在Fragment / Activity中简单地实现适配器时,你也设置了这个监听器

adapter.setClickListener(new AdapterClass.ItemClickListener() {
        @Override
        public void onItemClick(View view, int position) {
            // change your data based on position clicked and call notifyDataSetChanged (after you made any data changes ofc)
            adapter.notifyDataSetChanged();
        }
    });