2013-09-24 3 views
1

У меня есть listview, который я заполнил в alertDialog Когда отображаются alertDialog, пользователь может щелкнуть эти элементы в представлении списка, и именно тогда проблема возникает. Я не хочу пользователь, чтобы иметь возможность нажимать на элементы в списке, и я уже пробовал добавить это на мой xml макет android:clickable="false" и android:focusable="false", но я все равно получаю те же результаты. Может кто-нибудь помочь мне с этим вопросом, что иметь.Попытка сделать элементы списка неактивными

Вот мой базовый адаптер класса:

public class MyAdapter extends BaseAdapter { 

     final String[] listItemsFirstRow = {"Item1","Item2"}; 
     final String[] listItemSecondRow = {"Item1", "Item2"}; 

     @Override 
     public int getCount() {  
      return listItemsFirstRow.length; 
     } 

     @Override 
     public Object getItem(int position) { 

      return null; 
     } 

     @Override 
     public long getItemId(int position) { 

      return position; 

     } 

     @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 

      if(convertView == null) 
      { 
       LayoutInflater layoutInflater = (LayoutInflater) parent.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
       convertView = layoutInflater.inflate(R.layout.twolinelistview, null); 
      } 

      ((TextView)convertView.findViewById(R.id.text1)).setText(listItemsFirstRow[position]); 
      ((TextView)convertView.findViewById(R.id.text2)).setText(listItemSecondRow[position]); 

      return convertView; 

     } 

    } 

А вот мой XML макет:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:gravity="center_vertical" 
    android:paddingLeft="15dip" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 


    <TextView 
     android:textAppearance="?android:attr/textAppearanceMedium" 
     android:id="@+id/text1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:clickable="false" 
     android:focusable="false" /> 
    <TextView 
     android:textAppearance="?android:attr/textAppearanceSmall" 
     android:textColor="?android:attr/textColorSecondary" 
     android:id="@+id/text2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:clickable="false" 
     android:focusable="false" /> 
</LinearLayout> 
+1

Добавить android: clickable = "false" для вашего родителя LinearLayout в вашем xml. – nedaRM

ответ

3

Изменить ваш BaseAdapter переопределить isEnabled сказать ListView, что элементы не являются интерактивными.

Пример:

@Override 
public boolean isEnabled(int position) { 
    return false; 
} 

Обратите внимание, что документация говорит, что это будет делать именно то, что вы хотите:

Возвращает истину, если элемент в указанной позиции не является разделителем. (Разделитель является неизбираемым, не кликабельным элементом)

+0

спасибо большое за вашу помощь !! –

0

Попробуйте установить android:clickable="false" и android:longClickable="false" для ListView в XML, или вы можете установить его перед также установите адаптер. Этого должно быть достаточно, чтобы отключить его, но если не android:focusable="false" и android:enabled="false", определенно это сделать.

Если вы просто пытаетесь предотвратить выделение предметов, другой вариант заключается в изменении способа отображения выбранных элементов и игнорирования событий. Один из способов, который был предложен в an older question является:

android:listSelector="@android:color/transparent"    
android:cacheColorHint="@android:color/transparent" 
Смежные вопросы