如何连接RecyclerView的ViewHolder和容器活动/片段?

时间:2015-08-06 16:48:31

标签: android android-recyclerview android-viewholder

我将ViewHolder本身作为其OnClickListener

public class ListItemViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
    ...
    @Override
    public void onClick(View view) {
        ...
    }
}

现在我可以处理activity / fragment中列表项的click事件。但是,我想对该项目给出“反馈”。例如,列表项包含TextViewProgressBar,点击它时ProgressBar会显示,TextView将隐藏,活动/片段将会显示做类似HTTP请求的事情。请求结束后,ProgressBar将变为不可见,TextView将再次显示。如何通知列表项ViewHolder此类进展?

2 个答案:

答案 0 :(得分:1)

最简单的方法是在创建时传递Activity

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

    Activity mActivity;

   public ListItemViewHolder (Activity activity) {
         mActivity = activity;
    }


    @Override
   public void onClick(View view) {

        }
    }

答案 1 :(得分:0)

只需使用onClick视图即可获得参考。例如:

@Override
    public void onClick(View view) {
        someText= (TextView) view.findViewById(R.id.someTextId);
        someProgressBar= (ProgressBar) view.findViewById(R.id.someProgressBarId);

        someText.setVisibility(View.GONE);
    }

如果您想更具体,请为所需的项目

创建一个onClickListener
public void onBindViewHolder(final ViewHolder holder, final int position) {
            final Someobject obj = objectList.get(position);

       holder.vProgressBar.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                   // Do what you want, hide the text or whatever
                }
       });
    ...
}

希望它有所帮助!