单击后如何更改回收器视图中的特定图像

2024-02-10

我想更改 recyclerview 中单击项目的透视图像。知道发生了什么,如果我单击项目 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的适配器

 ((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)

}

在项目上单击 Recyclerview

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

               MyRecyclerViewAdapter.changeImage(position);

                }
            });
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

单击后如何更改回收器视图中的特定图像 的相关文章

随机推荐

  • Rails 4 将登录设计为弹出窗口

    您好 我正在使用设备对用户进行身份验证 我已经按照各种教程在弹出窗口中登录 但我没有成功 任何人都可以详细告诉我如何做到这一点 我已经尝试了各种教程 但没有任何效果 每件事都再次重定向到登录页面 我是 Rails 的新手请帮忙 我无法在同一
  • 价值迭代和策略迭代有什么区别? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 在强化学习中 有什么区别策略迭代 and 价值迭代 据我了解 在价值迭代中 您使用贝尔曼方程来求解最优策略 而在策略迭代中 您随机选择一个
  • 为什么使用@PostConstruct?

    在托管 Bean 中 PostConstruct在常规 Java 对象构造函数之后调用 我为什么要使用 PostConstruct通过 bean 初始化 而不是常规构造函数本身 因为当调用构造函数时 bean 尚未初始化 即没有注入依赖项
  • 如何在 Visual Studio 2008 中关闭 RTTI

    我不确定其他版本 但是 在 VS 2008 中 即使禁用了 RTTI 我也可以通过调用来查询信息typeid T name 关于类型 它适用于所有类型 包括内部类型和用户创建的类型 我们的项目禁用了 RTTI 但我惊讶地发现这仍然有效 这是
  • 如何在批量插入之前将 .csv 文件中的日期转换为 SQL 格式

    我有一个 csv 文件 其中包含几千个游戏日期 但它们都是 MM DD YYYY 格式 2 27 2011 3 05 PM 26 14 26 和 14 是团队 ID 尝试将它们放入 SQL 中只会导致 0000 00 00 被放入我表的日期
  • Google 操作模拟器不适用于标准 Google Assistant 功能

    我已经使用 Actions on Google 2 5 0 和dialogflow fulfillment 0 6 1 Node js 库构建了一个操作 我无法在对话框流测试控制台上测试我的应用程序 因为我返回那里不支持的 conv 对象
  • 编译器不遵循 Visual Studio C++ 中的符号链接

    我正在使用 Visual Studio 2008 C 项目 Visa 32 位 我有以下内容 include我的源代码中的指令 include
  • 克隆 git 存储库时出现 RSA 主机密钥警告

    我正在使用 git bash 克隆我的 github 存储库并不断收到警告 我正在使用 SSH 所以 我使用这个 git 命令 git clone email protected cdn cgi l email protection Tap
  • 启用迁移 - 无法将参数绑定到参数“路径”

    我是 ASP NET 新手 正在尝试使用实体框架设置 webAPI C 应用程序 但是当我尝试在 nuget package manager 控制台上运行 Enable Migrations 命令时 出现以下错误 无法将参数绑定到参数 Pa
  • Android - 播放视频的不同方式

    我刚刚遇到了 VideoView 的限制 无法播放宽度超过 320 像素的 mp4 视频文件 我想知道我们如何才能克服这些限制 我试图让我的应用程序尽可能宽容 所以除了使用 VideoViews 之外 还有其他方法来播放这些 mp4 视频吗
  • jmeter HTTP响应代码:org.apache.http.conn.HttpHostConnectException,非HTTP响应消息:连接被拒绝错误

    我正在使用 JMeter 测试负载 我正在使用 Amazon Server 当我测试 400 个并发用户的负载时 我收到错误消息 HTTP response code org apache http conn HttpHostConnect
  • 检测 Symfony2 中的实体配置错误

    好吧 我不知道如何修复项目中的错误 我正在尝试处理具有多对多属性关系的嵌套表单 错误表明它无法创建关联 因为其中一侧需要 ID 好吧 所以我尝试只创建缺失的一面 但仍然是同样的错误 最后 我意识到这个简单的代码仍然存在同样的问题 publi
  • 如何在 MPMoviePlayerController iPhone 中关闭音频

    如何关闭和打开 MPMoviePlayerController 的音频 我尝试了 useApplicationAudioSession 这个属性 即使它不起作用 你能帮我么 回答永远不会太晚 对吗 我也在寻找一种方法来做到这一点 我花了一段
  • git fetch 使用路径而不是远程

    我明白跑步的意义git fetch
  • wordpress .htaccess 重写 url

    我正在为我的 WordPress 网站开发测验部分 我的网站上安装了 W3 总缓存 我想进行测验 http www example com quiz seo friend title id http www example com quiz
  • Oracle:非池连接和 DRCP 之间的区别

    我实际上正在读书Oracle cx Oracle http www oracle com technetwork articles dsl python 091105 html教程 在那里我遇到了非池连接和 DRCP 基本上我不是 DBA
  • 使用 SavedStateHandle 引用共享视图模型

    我有单个活动应用程序和片段数量 其中一些片段正在使用我的视图模型 通常如下所示 private val myViewModel MyViewModel by sharedViewModel 如果我想同时拥有模型怎么办shared并用 Sav
  • 使用 EFCore 设置带有私有字段的自定义外键列名称

    我有以下数据模型 public class Foo public Foo int barId BarId barId private int BarId public Bar Bar get private set public class
  • 检查函数中是否缺少参数

    这是检查函数中缺少参数的正确方法吗 这适用于所有浏览器吗 IE 怎么样 function getName name name name null name default return name 检查参数的方法取决于您传递给函数的信息类型以
  • 单击后如何更改回收器视图中的特定图像

    我想更改 recyclerview 中单击项目的透视图像 知道发生了什么 如果我单击项目 2 图像会在列表中的随机项目位置发生变化 public class MyRecyclerViewAdapter extends RecyclerVie