ListView с выделенным элементом listadapter

1

Я использую ListView с кодом ниже. Проблема в том, что когда я нажимаю элемент списка, он не подсвечивается. Понимаете, я попытался использовать arg0.setBackgroundColor(Color.RED); но это приводит к тому, что когда я нажимаю на элемент и не пускаю палец вверх, ничего не происходит, когда я нажимаю на элемент и отпускаю палец вверх, он подсвечивается и остается выделенным. Как это сделать, когда я удаляю палец вверх, чтобы выделить выделение? Я не знаю, почему это не ведет себя как простой список.

 private class ListAdapter extends ArrayAdapter { 
        private ArrayList mList; 
        private Context mContext;

        public ListAdapter(Context context, int textViewResourceId, ArrayList list) {
            super(context, textViewResourceId, list);
            this.mList = list;
            this.mContext = context;
        }

        public View getView(int position, View convertView, ViewGroup parent) {
            View view = convertView;

            try {
                if (view == null) {
                    LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                    view = vi.inflate(R.layout.list_item, null);
                }

                final Object listItem = mList.get(position);
                if (listItem != null) {

                    ((TextView) view.findViewById(R.id.tv_name)).setText(((HotOrNot) listItem).getName());
                    view.setOnClickListener(new OnClickListener() {
                        public void onClick(View arg0) {
                            arg0.setBackgroundColor(Color.RED);
                            Toast.makeText(SQLView.this, "ID: " + ((HotOrNot) listItem).getID(), Toast.LENGTH_SHORT).show();
                            Toast.makeText(SQLView.this, "Name: " + ((HotOrNot) listItem).getName(), Toast.LENGTH_SHORT).show();
                            Toast.makeText(SQLView.this, "Descr: " + ((HotOrNot) listItem).getDescription(), Toast.LENGTH_SHORT).show();


                           // finish();
                        }
                    });
                }
            } catch (Exception e) {
                //Log.i(Splash.ListAdapter.class.toString(), e.getMessage());
            }
            return view;
        }
    }
  • 0
    Посмотрите на этот вопрос - он описывает решение того, что вам нужно. Короче говоря, вам нужно использовать селектор для фона элемента списка. stackoverflow.com/questions/9434317/...
Теги:
listview
highlight

1 ответ

0
Лучший ответ

поместить этот XML - файл в drawable папку и в list_item установить фон в mainlayout

  <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">

        <item android:drawable="#FFFFFF" android:state_pressed="false" android:state_selected="false"/>
        <item android:drawable="#FF00FF" android:state_pressed="true" android:state_selected="false"/>
        <item android:drawable="#FF00FF" android:state_pressed="true" android:state_selected="true"/>

    </selector>
  • 0
    что я не могу понять ваш комментарий
  • 0
    Вы не можете понять мой ответ .... Сначала скопируйте мой ответ из <? xml ... </ selecter>, затем щелкните правой кнопкой мыши на папке Drawable и создайте XML-файл и дайте имя list_bg и сохраните в папке Drawable (Dont in layout), затем вставьте ,,, тогда в вашем макете list_item есть любой макет и дайте android: background = "@ drawable / list_bg", затем очистите и соберите свой проект и выполните Rerun

Ещё вопросы

Сообщество Overcoder
Наверх
Меню