2013-09-04 2 views
0

Я создаю listview со ссылкой от this. Теперь я пытаюсь выделить определенную строку в списке. Когда я нажимаю кнопку, конкретная строка подсвечивается на секунду. Но я хочу, чтобы строка оставалась одного цвета, пока я не нажму кнопку в следующей строке. мой список -Выделите строку в listview

<ListView 
     android:id="@+id/mainListView" 
     android:layout_width="154dp" 
     android:layout_height="fill_parent" 
     android:layout_margin="10dp" 
     android:background="@drawable/layer_list" 
     android:dividerHeight="2px" 
     > 

и в listview размещаем текстовое изображение и изображение. Для выделения вида я следовал this учебник. Я новичок в android. Помогите мне в этом. Заранее спасибо ..

+2

Создать селектор для ячеек –

+0

сохранить позицию элемента, который выбран и использовать его соответственно в getView - возможный дубликат http://stackoverflow.com/questions/9281000/android-keep-listviews-item- выделенный-один-один-был-нажат – Atrix1987

+0

@user попробуйте мой ответ, он будет работать определенно. У меня есть две реализованные функции – Developer

ответ

0

Создать A-селектор в Найденная для рисования папка listview_item_selection_effect.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item android:state_focused="true"> 
    <shape> 
     <solid android:color="#ffffff" /> 
    </shape> 
</item> 
    <item> 
    <shape> 
     <solid android:color="#00a7eb" /> 
    </shape> 
</item> 
</selector> 

в макете, который имеет ListView

android:background="?android:attr/activatedBackgroundIndicator" 

В Вашей активность По пункту ListView Нажал

listView.setOnItemClickListener(new OnItemClickListener(){ 
    @Override 
    public void onItemClick(AdapterView<?> arg0, View arg1,int position, long arg3){ 
     listView.setSelector(R.drawable.listview_item_selection_effect); 
    listView.setItemChecked(position,true); 
    } 
}); 

В ListView

android:choiceMode="singleChoice" 
+1

Позиция - это элемент, который выбран в списке. – Developer

+0

Спасибо за ваш ответ. Но я не хочу упоминать, что позиция ранее означает, что во время выполнения, когда я нажимаю кнопку вверх, listview должен выделять конкретную строку, пока я не нажму следующий. – AndroidOptimist

+0

В чем проблема, с которой вы сейчас сталкиваетесь, это отлично работает для меня, если вы можете отправить мне образец образца, я могу решить эту проблему. – Developer

0

а) Использовать пользовательский макет

MyLayout extends LinearLayout implements Checkable { 
    boolean check = false 
    public void setChecked(boolean checked) { 
      if (checked){ 
      //HIGHLIGHT THE BACKGROUND 
      }{ 
      // remove the background 
      } 

    } 
    public void toggle() { 
     setChecked(!check); 
    } 
    } 

б) пользовательского элемента использовать MyLayout списке следует, как макет

с) В вашей деятельности осуществлять OnItemClickListener и onItemClick вызова listview.setItemChecked(position, true);

Смежные вопросы