Изменить цвет фона выделенного элемента в программе - PullRequest
0 голосов
/ 12 апреля 2019

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

  public interface Callback{
        void onItemClicked(String i_name, boolean longClick);
    }

Вот код onclick и onlongclick-

 @Override
    public void onClick(View view) {
           String[] tag = ((String) view.getTag()).split(":");
           String i_name = tag[1];
        Toast.makeText(context, ""+i_name, Toast.LENGTH_SHORT).show();
        if(callback != null)
        {
            callback.onItemClicked(i_name,false);
        }

    }

    @Override
    public boolean onLongClick(View view) {
        String[] tag = ((String) view.getTag()).split(":");
        String i_name = tag[1];
        if(callback != null)
        {
            callback.onItemClicked(i_name,false);
        }
        return false;

    }

Вот выбранный код переключателя -

  public void toggleSelected(String i_name)
    {
        final boolean newState = !selectedList.contains(i_name);
        if(newState)
        {
         // i want to give background color to i_name

               selectedList.add(i_name);
               Toast.makeText(context, "selected list1- "+selectedList, Toast.LENGTH_SHORT).show();
        }
        else
        {
            selectedList.remove((String) i_name);
            Toast.makeText(context, "selected list2- "+selectedList, Toast.LENGTH_SHORT).show();

        }
        notifyDataSetChanged();
    }

вот код onItemClicked из фрагмента -

 @Override
    public void onItemClicked(String i_name, boolean longClick) {
        if(longClick)
        {
             ((MyCategoryAdaptercheckbox) MyAdapter).toggleSelected(i_name);
        }
        else
        {
            ((MyCategoryAdaptercheckbox) MyAdapter).toggleSelected(i_name);
        }
    }

Это код от владельца bbindview, где я устанавливаю тег -

 getMyCategoryAdapter1 =  category_name.get(i);

        viewHolder.view.setActivated(selectedList.contains(i));
        viewHolder.view.setTag("items:" + getMyCategoryAdapter1.getC_name());
        viewHolder.view.setOnClickListener(this);
        viewHolder.view.setOnLongClickListener(this); 

Я хочу дать фонЦвет для i_name в методе toggleselected (). Как я могу это сделать. Пожалуйста, помогите. Заранее спасибо.

1 Ответ

0 голосов
/ 12 апреля 2019

Основная идея выбора и анализа предметов в представлении переработчика.

Сохранение тега в вашей модели для выбранных и невыбранных.

для e.x

boolean isSelected;

когда вы заполняете данные, все значения в вашем списке делаются на isSelected false по умолчанию.

Затем долгим нажатием установите значение isSelected в значение true для этой позиции только в вашем списке и вызовите notifyDataSetChanged.

и в вашем onbindviewholder чеке

if(yourModel.isSelected){

// show the row selected

}else {

// show the row unselected

}

Надеюсь, вы поняли.

...