如何在适配器android中访问视图持有人之外的持有人元素?

sta*_*ner 6 android android-recyclerview

我有一个 ViewHolder 类。

class VHHeader extends RecyclerView.ViewHolder{
        TextView txtTitle;
        RecyclerView recyclerView;

        public VHHeader(View itemView) {
            super(itemView);
            this.txtTitle = (TextView)itemView.findViewById(R.id.txtHeader);
            this.recyclerView =(RecyclerView)itemView.findViewById(R.id.recyclerView);


        }
    }
Run Code Online (Sandbox Code Playgroud)

现在我想在同一个适配器类中以一些不同的方法访问这个 View Holders recycler 视图。

Public void useRecyclerView(){
}
Run Code Online (Sandbox Code Playgroud)

如何在这个方法中使用View Holder的元素。

Ket*_*ani 6

我认为您想在具有相同适配器的某些方法中使用您的视图持有者元素。因此,您需要在函数中传递视图支架和位置,您可以在其中使用视图支架元素。

例子。

@Override
            public void onBindViewHolder(final AdapterName.ViewHolder holder, final int position) {

                holder.elementname.setText(arrayList.get(position).getYourMethodName());


                holder.elementname.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                yourMethodName(holder,position);

                }
            });
        }



    //and in that method    you can use your view holder elements.

    private void yourMethodName(final AdapterName.ViewHolder holder,final int position)
    {
         holder.elementname.setText(arrayList.get(position).getYourMethodName());
    }       


//This way you can use your elements 
Run Code Online (Sandbox Code Playgroud)


Bat*_*kun 2

据我了解,您想对 recyclerview 的项目单击进行一些更改。您不需要存储您的viewholder。您可以在适配器的 onBindViewHolder 方法上设置 clicklistener,如下所示:

@Override
public void onBindViewHolder(final VHHeader holder, final int position) {
    holder.itemView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // Do your operations here like
            holder.txtTitle.setText("new title");
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

祝你好运。