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

伊戈尔(Igor Mytyuk)

我正在尝试使recyclerView项目在滑动时变色,因此它会被加亮,因为在滑动时我打开了一个,AlertDialog这样人就会知道他正在改变哪个项目。

但是我的主要问题是当我尝试通过使用更改背景颜色时

viewHolder.itemView.setBackgroundColor(Color.parseColor("#cc0000"));

没什么大不了的,这是我的完整代码 recyclerView

public void buildTopRecyclerView(){

    mRecyclerViewTOP = findViewById(R.id.listView);
    mRecyclerViewTOP.setHasFixedSize(true);
    RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(this);
    exampleAdapter = new ExampleAdapter(itemCassas);
    mRecyclerViewTOP.setLayoutManager(mLayoutManager);
    mRecyclerViewTOP.setAdapter(exampleAdapter);

  //  onSwipe();

    new ItemTouchHelper(new ItemTouchHelper.SimpleCallback(0,ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) {
        @Override
        public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
            return false;
        }

        @Override
        public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
            int position = viewHolder.getAdapterPosition();
            if (direction == ItemTouchHelper.RIGHT) {
                customAllertDelete(position);
                viewHolder.itemView.setBackgroundColor(Color.parseColor("#cc0000"));
                exampleAdapter.notifyDataSetChanged();
            }
            if (direction == ItemTouchHelper.LEFT) {
                customAllertQuantity(position);
            }

        }
    }).attachToRecyclerView(mRecyclerViewTOP);

}

如果可能有用的话,这里也是适配器代码

public class ExampleAdapter extends RecyclerView.Adapter<ExampleAdapter.ExampleViewHolder> {

    private ArrayList<ItemCassa> mExampleList;


    @NonNull
    @Override
    public ExampleViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.recyclerlist_item,parent,false);
        return new ExampleViewHolder(v);
    }

    ExampleAdapter(ArrayList<ItemCassa> exampleList){
        mExampleList = exampleList;
    }

    @Override
    public void onBindViewHolder(@NonNull ExampleViewHolder holder, int position) {
        ItemCassa item = mExampleList.get(position);

        holder.desc.setText(item.getBtnName());
        holder.qta.setText(String.valueOf(item.getQuant()));
        holder.imp.setText(String.valueOf((new DecimalFormat("#0.00").format(item.getPrice()))));

        if(position % 2 == 0 ){
            holder.itemView.setBackgroundColor(Color.parseColor("#C0C0C0"));
            holder.desc.setBackgroundColor(Color.parseColor("#C0C0C0"));
            holder.qta.setBackgroundColor(Color.parseColor("#C0C0C0"));
            holder.imp.setBackgroundColor(Color.parseColor("#C0C0C0"));

        }else if(position % 2 == 1){
            holder.itemView.setBackgroundColor(Color.parseColor("#D3D3D3"));
            holder.desc.setBackgroundColor(Color.parseColor("#D3D3D3"));
            holder.qta.setBackgroundColor(Color.parseColor("#D3D3D3"));
            holder.imp.setBackgroundColor(Color.parseColor("#D3D3D3"));

        }

    }

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

    public static class ExampleViewHolder extends RecyclerView.ViewHolder {

        public TextView desc;
        public TextView qta;
        public TextView imp;

        ExampleViewHolder(View itemView) {
            super(itemView);

            desc = itemView.findViewById(R.id.Desc);
            qta = itemView.findViewById(R.id.Qta);
            imp = itemView.findViewById(R.id.Imp);


        }
    }

    public void removeItem(int position) {
        mExampleList.remove(position);
        notifyItemRemoved(position);
    }




}

这是gif,它“解释”了我想做的事情,正如您在滑动上看到的那样,它打开一个AlertDialog并返回选定的项目,但是现在我将为选定的项目着色背景,直到用户做出选择为止在AlertDialog中

图片

Umair

尝试像这样使用:

首先,在onSwiped方法中调用适配器的方法并传递必需的参数。

  @Override
        public void onSwiped(RecyclerView.ViewHolder viewHolder, int swipeDir) {
            int swipedPosition = viewHolder.getAdapterPosition();
            YourAdapter adapter = (YourAdapter) rlCartList.getAdapter();


                adapter.remove(swipedPosition); // I was removing items so you
                                                  can change the name of method as you like
        }

现在在您的适配器中执行以下操作:

  public void remove(int position) {

        YourModel item = cartItems.get(position);

        if (cartItems.contains(item)) {
            ViewHolder.tvItemName.setBackgroundColor(mContext.getResources().getColor(R.color.grey));
            notifyDataSetChanged();
        }
    }

还有一件事是,您将需要制作textView或您要为其分配背景的视图Static而且我已经测试了这段代码,在我的项目中,当TextView的背景在滑动时发生了变化时,它运行良好。

告诉我您是否需要进一步的帮助。此外,您还可以在适配器中使用警报对话框:)

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

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

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

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

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

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

如何更改QStringListModel项目的颜色?

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

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

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

如何在悬停时更改选择选项项目的颜色?

如何在导航抽屉中更改所选项目的背景颜色

如何在React Native中更改安全区域中项目的文本颜色?

如何在导航抽屉中更改列表中选定项目的颜色?

如何在Recyclerview中将所选项目的位置更改为顶部?

如何在Android的RecyclerView中更改另一个项目的状态

如何在Recyclerview Android中以两种颜色滑动以删除和滑动以存档

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

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

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

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

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

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

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

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

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

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

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

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

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