Измените цвет фона кнопки в представлении переработчика

#java #android #xml #android-fragments #android-recyclerview

#Ява #Android #xml #android-фрагменты #android-recyclerview

Вопрос:

Я хочу изменить цвет фона определенной кнопки в моем представлении переработчика, когда будут выполнены определенные условия. Как мне добраться до этой конкретной кнопки?

Это мой класс адаптера :-

общедоступный класс mixandmatchadapter расширяет просмотр вторсырья.АдаптерViewHoldergt;{ частный статический ТЕГ конечной строки = «RecyclerAdapter»; Список данных; Контекстный контекст; Индекс int; Текст строки;

 public mixandmatchadapter(int index, String text) {  this.index = index;  this.text = text; } public mixandmatchadapter(Listlt;Mixmatchclassgt; datalist, Context context) {  this.datalist = datalist;  this.context = context; } @NonNull @Override public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {  LayoutInflater layoutInflater= LayoutInflater.from(parent.getContext());  View view = layoutInflater.inflate(R.layout.row_itemmixandmatch,parent,false);  ViewHolder viewHolder = new ViewHolder(view);  return viewHolder; }   @Override public void onBindViewHolder(@NonNull ViewHolder holder, int position) {  holder.mainbutton.setText(datalist.get(position).getStatement());  //String.valueOf(position)) }  @Override public int getItemCount() {  return datalist.size(); }  class ViewHolder extends RecyclerView.ViewHolder{   Button mainbutton;  public ViewHolder(@NonNull View itemView) {  super(itemView);  mainbutton = itemView.findViewById(R.id.mainbutton);   } } }  

Например:- Если у меня есть десять кнопок в моем представлении переработчика, и я хочу изменить цвет кнопки в позиции 5, как я получу к ней доступ?

Это мой главный фрагмент :-

 public class Mixandmatch extends Fragment {  RecyclerView recyclerView;   mixandmatchadapter mixandmatchadapter;   public static Listlt;Mixmatchclassgt; datalist;  private static int slideCounter=2;  @Override  public void onStart() {  super.onStart();  }  public Mixandmatch() {    }  @Override  public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {  View view = inflater.inflate(R.layout.activity_mixandmatch, container,false);    recyclerView = view.findViewById(R.id.rightlyt);   datalist=new ArrayListlt;gt;();  datalist.add(new Mixmatchclass("Statement 2",0));  datalist.add(new Mixmatchclass("Statement 4",1));  datalist.add(new Mixmatchclass("Statement 1",2));  datalist.add(new Mixmatchclass("Statement 5",3));  datalist.add(new Mixmatchclass("Statement 3",4));  datalist.add(new Mixmatchclass("Statement 7",5));  datalist.add(new Mixmatchclass("Statement 6",6));   recyclerView.setAdapter(new mixandmatchadapter(datalist,getActivity()));  recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));   ItemTouchHelper itemTouchHelper = new ItemTouchHelper(simpleCallback);  itemTouchHelper.attachToRecyclerView(recyclerView);   return view;  }  ItemTouchHelper.SimpleCallback simpleCallback = new   ItemTouchHelper.SimpleCallback(ItemTouchHelper.UP  | ItemTouchHelper.DOWN | ItemTouchHelper.START | ItemTouchHelper.END , 0) {  @Override  public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull   RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder target) {   int fromPosition = viewHolder.getAdapterPosition();  int toPosition = target.getAdapterPosition();   Collections.swap(datalist,fromPosition,toPosition);   recyclerView.getAdapter().notifyItemMoved(fromPosition,toPosition);  recyclerView.getAdapter().notifyDataSetChanged();  return false;  }  @Override  public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {   }  };  

Любая помощь будет признательна.

Комментарии:

1. onBindViewHolder вызывается один раз для каждой позиции, поэтому вы можете проверить onBindViewHolder, если(позиция==5) holder.mainButton.backgroundColor …

2. Я также хочу добавить прослушиватель щелчка на другую кнопку, после нажатия на которую я хочу поставить условие. Он отлично работает без настройки прослушивателя щелчков, но после включения clicklistener ничего не происходит.

3. извините, вам придется быть более конкретным и задать этот вопрос в новом отдельном вопросе, включая ваш код

4. Всегда убедитесь в том, чтобы переопределить getItemId и getItemType