Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了android – 如何在单击后更改回收器视图中的特定图像大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我想在Recycler视图中更改单击项目的相应图像.现在发生的事情是,如果我点击第2项图像正在改变列表中的随机项目位置

public class MyRecyclerViewAdapter extends RecyclerView.Adapter<MyRecyclerViewAdapter.DataObjectHolder> {

private static String LOG_TAG = "MyRecyclerViewAdapter";
private ArrayList<CRMbean> mDataset;
private static MyClickListener myClickListener;
static Context mContext;
private List<String> mtList ;


public MyRecyclerViewAdapter(List<String> filteredList,CRMactivity crMactivity) {
    mtList = filteredList;

}

public static class DataObjectHolder extends RecyclerView.ViewHolder
        implements View
        .onClickListener {
    public static ImageView testImage;
    TextView name;
    TextView regId;
    TextView roomNo;

    public DataObjectHolder(View itemView) {
        super(itemView);
        name = (TextView) itemView.findViewById(R.id.Name);
        regId = (TextView)itemView.findViewById(R.id.reg_id);
        roomNo = (TextView)itemView.findViewById(R.id.roomno);
         testImage = (ImageView)itemView.findViewById(R.id.logo);


        Log.i(LOG_TAG,"Adding Listener");
        itemView.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        myClicklistener.onItemClick(getAdapterPosition(),v);

    }
}
public void setOnItemClickListener(MyClickListener myClickListener) {
    MyRecyclerViewAdapter.myClickListener = myClickListener;
}
public MyRecyclerViewAdapter(ArrayList<CRMbean> myDataset) {
    mDataset = myDataset;
}





@Override
public MyRecyclerViewAdapter.DataObjectHolder onCreateViewHolder(ViewGroup parent,int viewTypE) {

    View view = LayoutInflater.from(parent.getContext())
            .inflate(R.layout.card_view_row,parent,falsE);

    DataObjectHolder dataObjectHolder = new DataObjectHolder(view);
    return dataObjectHolder;
}

@Override
public void onBindViewHolder(MyRecyclerViewAdapter.DataObjectHolder holder,int position) {
    holder.name.setText(mDataset.get(position).getName());
    holder.regId.setText(mDataset.get(position).getRegId());
    holder.roomNo.setText(mDataset.get(position).getRoomNo());

}

public void addItem(CRMbean dataObj,int indeX) {
    mDataset.add(index,dataObj);
    notifyItemInserted(indeX);
}

public void deleteItem(int indeX) {
    mDataset.remove(indeX);
    notifyItemRemoved(indeX);
}

@Override
public int getItemCount() {
    return mDataset.size();
}


public interface MyClickListener {
    void onItemClick(int position,View v);
}

}

以上是适用于recyclerview的adpater

((MyRecyclerViewAdapter) mAdapter).setOnItemClickListener
            (new MyRecyclerViewAdapter.MyClickListener() {
                @Override
                public void onItemClick(int position,View v) {
                    Log.i(LOG_TAG," Clicked on Item " + position);

                    MyRecyclerViewAdapter.DataObjectHolder.testImage.setImageresource(R.drawable.video_icon_fill);
                    //geTinformation(position);

                }
            });

上面的代码适用于OnclickListener

解决方法

试试这个,

class CRMbean{
   public Boolean isImageChanged;
  public Boolean isImageChanged() {
        return isImageChanged;
    }

    public void setImageChanged(Boolean imageChanged) {
        isImageChanged = imageChanged;
    }
}

在BindHolder上做它,

@Override
public void onBindViewHolder(MyRecyclerViewAdapter.DataObjectHolder holder,int position) {
    holder.name.setText(mDataset.get(position).getName());
    holder.regId.setText(mDataset.get(position).getRegId());
    holder.roomNo.setText(mDataset.get(position).getRoomNo());
if(mDataset.get(position).isImageChanged()){
    holder.testImage.setImageresource(R.drawable.video_icon_fill);
}else{
     holder.testImage.setImageresource("You Default Image");
}
}

在Adapter上写这个方法

public void changeImage(int indeX) {
 mDataset.get(position).setImageChanged(true);
   notifyItemChanged(indeX)

}

在项目上单击Recyleview

(MyRecyclerViewAdapter) mAdapter).setOnItemClickListener
            (new MyRecyclerViewAdapter.MyClickListener() {
                @Override
                public void onItemClick(int position," Clicked on Item " + position);

               MyRecyclerViewAdapter.changeImage(position);

                }
            });

大佬总结

以上是大佬教程为你收集整理的android – 如何在单击后更改回收器视图中的特定图像全部内容,希望文章能够帮你解决android – 如何在单击后更改回收器视图中的特定图像所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。