Listview выделено onclick вместо элемента

Я пытаюсь выделить отдельный элемент в представлении списка, который был отделен от строки, однако вместо элемента выделен весь Listview.

Пожалуйста помочь.

        protected void onPostExecute(String result) {

        Local.Set(getApplicationContext(), "TicketHolders", result);            
        String[] RowData = result.toString().split(";");
        List<String> TicketholdersArray = new ArrayList<>();

        for(int x=0;x<RowData.length;x++){
            TicketholdersArray.add(RowData[x].toString());
        }

        // below creates and styles listview
        ListView listView1 = (ListView)       findViewById(R.id.your_list_view_id);
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(GuestlistActivity.this,R.layout.liststyle, TicketholdersArray);
        listView1.setAdapter(adapter);

        listView1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> ArrayAdapter, View view, int position, long id) {
                view.setSelected(true);
            }
        });

3 ответа

  1. для работы над определенным видом в строке элемента listview необходимо работать с адаптером по методу get view (), выбрать вид и задать цвет listner и т.д… все, что вам нужно

  2. Попробуйте это:

    Чтобы сохранить цвет элемента listview при его нажатии, включите в макет listview следующую строку:

    android:background="@drawable/bg_key"
    

    Затем определите bg_key.xml в drawable папке, как это:

    <?xml version="1.0" encoding="utf-8" ?>
    <selector >
        <item 
            android_state_selected="true"
            android_drawable="@color/pressed_color"/>
        <item
            android_drawable="@color/default_color" />
    </selector>
    

    Наконец, включите это в ListView onClickListener:

    listView.setOnItemClickListener(new OnItemClickListener() {
    
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position,long arg3) {
            view.setSelected(true);
            ... //Anything
        }
    });
    

    Таким образом, только один элемент будет выбран цвет в любое время. Значения цветов можно определить в res/values / colors.xml с чем-то вроде этого:

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <color name="pressed_color">#4d90fe</color>
        <color name="default_color">#ffffff</color>
    </resources>
    

    Надеюсь, это поможет вам

  3. listview имеет свойство для отображения выбранного элемента

    добавьте этот код в listView item_layout в xml

     android_background="@drawable/list_selector"
    

    и это ваш код селектора. создание файла селектора с возможностью рисования

     <!-- <item android_drawable="@color/android:transparent"  android_state_selected="true" /> -->
    <item android_drawable="@color/list_bg" android_state_selected="true"/>
    <item android_drawable="@color/list_bg" android_state_activated="true"/>
    <item android_drawable="@color/transparent"/>