#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