无法更改所选回收商项目的背景颜色

时间:2017-11-09 09:16:27

标签: java android android-recyclerview recyclerview-layout

我想在recyclerview中突出显示所选项目。我可以计算所选项目的数量。 我希望突出显示为

image .....

我试过这段代码。

     recyclerView.addOnItemTouchListener(new RecyclerItemClickListener(this, recyclerView, new RecyclerItemClickListener.OnItemClickListener() {
        @Override
        public void onItemClick(View view, int position) {
            if (isMultiSelect) {
                multi_select(position);
                selectedPositon = position;
            } else{
                Toast.makeText(getApplicationContext(), "Details Page", Toast.LENGTH_SHORT).show();
                 }

            if (selectedPositon == position) {
                view.setBackgroundColor(Color.parseColor("#e2a49e"));
            } else {
                view.setBackgroundColor(Color.parseColor("#f5f5f5"));
            }
        }

        @Override
        public void onItemLongClick(View view, int position) {
            if (!isMultiSelect) {
                selected_list = new ArrayList<AlertListItem>();
                isMultiSelect = true;
                selectedPositon = position;
                if (mActionMode == null) {
                    mActionMode = startActionMode(mActionModeCallback);
                }
            }

            if (selectedPositon == position) {
                view.setBackgroundColor(Color.parseColor("#e2a49e"));
            } else {
                view.setBackgroundColor(Color.parseColor("#f5f5f5"));
            }
            multi_select(position);
        }
    }));
}

有人可以帮助我。

2 个答案:

答案 0 :(得分:0)

           if (btn.getBackground().getConstantState().equals(itemView.getResources().getDrawable(R.drawable.understand_clicked).getConstantState())) {
                btn.setBackground(itemView.getResources().getDrawable(R.drawable.understand_not_clicked));          

         } else {
                btn.setBackground(itemView.getResources().getDrawable(R.drawable.understand_clicked));                   
            }

在View holder类中的自定义recyclerviewadapter中执行此代码。使用 getConstantState 获取当前图像状态。您还可以更改所选原始颜色。

答案 1 :(得分:0)

您可以使用以下代码

public void onBindViewHolder(final ViewHolder holder, final int position) {
        holder.textView.setText(array[position]);

        holder.row_linearlayout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                index=position;
                notifyDataSetChanged();
            }
        });
        if(index==position){
            holder.layout.setBackgroundColor(Color.parseColor("#ff8569"));
            holder.textView.setTextColor(Color.parseColor("#ffffff"));
        }
        else
        {
            holder.layout.setBackgroundColor(Color.parseColor("#ffffff"));
            holder.textView.setTextColor(Color.parseColor("#000000"));
        }

    }

HolderClass

public class ViewHolder extends RecyclerView.ViewHolder {
        private TextView textView;
        LinearLayout layout;
        RecyclerView recyclerView;

        public ViewHolder(final View itemView) {
            super(itemView);
            textView=(TextView)itemView.findViewById(R.id.textView1);
            layout=(LinearLayout)itemView.findViewById(R.id.layouot_linear);
            recyclerView=(RecyclerView)itemView.findViewById(R.id.recycler);
        }
    }