我有一个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);
}
}
现在,我想在同一个适配器类中使用某种不同的方法访问此View Holders回收器视图。
Public void useRecyclerView(){
}
如何在此方法中使用View Holder的元素。
答案 0 :(得分:3)
我认为你想在同一个适配器的某些方法中使用你的视图持有者元素。因此,您需要将视图持有者和位置传递给可以使用视图持有者元素的函数。
实施例。
@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
答案 1 :(得分:1)
据我了解,您希望对recyclelerview的项目点击进行一些更改。您不需要存储您的查看者。您可以在适配器的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");
}
});
}
祝你好运。
答案 2 :(得分:0)
class MyViewHolder extends RecyclerView.ViewHolder {
TextView title;
ImageView icons;
CheckBox checkBox;
public MyViewHolder(View itemView) {
super(itemView);
title = (TextView) itemView.findViewById(R.id.title);
}
}
public void onBindViewHolder(final MyViewHolder holder, final int position) {
final CategoryChildModel current = data.getItems().get(position);
holder.title.setText(current.getName());
}
答案 3 :(得分:0)
1. 如果要在适配器类中使用holder元素,则可以创建holder对象:
@Override
public AdapterClass.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_row, parent, false);
adaptercontext = parent.getContext(); //to get the activity context use this line.
MyViewHolder dataObjectHolder = new MyViewHolder(view); //in this way you can use the holder object.
}
2. 如果您想访问外部,请使用此MyViewHolder作为方法的参数,如下所示:
private void update_data(MyViewHolder holder)
{
holder.edittext1.setText("Updated value");
//for getting updated holder you can use **holder.getAdapterPosition()** to get the position of the element.
}
三江源。如果您有任何改动,请告诉我并进行更正。 享受编码。