如何从 MainActivity 更改 RecyclerView 项目的颜色?

拉维

我有一个具有回收视图的应用程序。我想给用户一个机会在夜间和白天模式主题之间切换我知道如何更改文本颜色和背景颜色,但在这种情况下我不能。实际上我无法从 MainActivity 中找到项目布局变量。如何从 MainActivity 创建 ViewHolder 类的对象?谁能帮帮我吗?

这是我的适配器类:

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder>{

    private List<ListItemModel> listItems;
    private Context context;

    public MyAdapter(List<ListItemModel> listItems, Context context) {
        this.listItems = listItems;
        this.context = context;
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item_model, parent, false);
        return new ViewHolder(view);
    }

    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        final ListItemModel listItem = listItems.get(position);
        holder.index_number.setText(listItem.getIndexNumber());
        holder.title_name.setText(listItem.getTitle());

    }

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

    public class ViewHolder extends RecyclerView.ViewHolder {

        TextView index_number, title_name;

        public ViewHolder(View itemView) {
            super(itemView);

            index_number = (TextView) itemView.findViewById(R.id.model_text_index_id);
            title_name = (TextView) itemView.findViewById(R.id.model_text_title_id);

        }

    }
}
奥米德·赫什马蒂尼亚

如果它是单选列表,您可以int在列表中定义一个参数并在适配器中定义一个方法

....
private int selectedPosition = -1;

public void setSelectedPosition(int index){
  selectedPosition  = index;
  notifyItemChanged(selectedPosition)
}

然后OnBindViewHolder这样做:

 @Override
public void onBindViewHolder(ViewHolder holder, int position) {
    final ListItemModel listItem = listItems.get(position);

    holder.index_number.setText(listItem.getIndexNumber());
    holder.title_name.setText(listItem.getTitle());

    if(position == selectedPosition){
      holder.index_number.setTextColor(MY_COLOR)
      holder.title_name.setTextColor(MY_COLOR)
    } else {
      holder.index_number.setTextColor(NORMAL_COLOR)
      holder.title_name.setTextColor(NORMAL_COLOR)
    }

}

对于多选列表,您可以在您的 isChosen 中定义一个参数ListItemModel,并将该参数更改为 true 和 false 并OnBindViewHolder检查该参数

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在滑动上更改RecyclerView项目的颜色?

如何在RecyclerView中更改单个项目的颜色?

如何从MainActivity访问RecyclerVIew中项目的进度栏

如何在按下按钮时更改recyclerView项目的颜色?

如何更改QStringListModel项目的颜色?

在RecyclerView中更改所选项目的背景颜色

在RecyclerView中更改所选项目的背景颜色

Kotlin:通过单击更改 RecyclerView 项目的背景颜色

如何更改RecyclerView中所有项目的布局?

如何更改RecyclerView隐藏项目的可见性?

如何在RecyclerView中更改特定项目的视图

如何避免项目的布局更改在 RecyclerView 中重复?

如何使用 Material ui 更改所选项目的颜色

如何更改从列表中选择的项目的背景颜色?

如何根据位置更改listView项目的颜色

如何在Flutter上更改BottomNavigationBar项目的颜色?

如何更改菜单中所选项目的颜色?

如何更改ListView上所选项目的颜色?

如何更改底部应用栏项目的颜色?

Tkinter 如何更改树视图所选项目的颜色

如何更改ListView中每个项目的背景颜色?

如何更改微调器项目的背景颜色

C# Listview - 如何更改每个新项目的颜色?

如何自动更改 QListWidget 中所选项目的颜色

如何更改QGraphicView所选项目的颜色

如何通过单击按钮更改项目的颜色?

如何更改工具栏上项目的颜色

如何更改amCharts TreeMap中较深层项目的颜色?

如何更改Unity Dash中显示的项目的文本颜色?