Как отключить элементы в представлении списка? - PullRequest
16 голосов
/ 18 апреля 2010

У меня есть представление списка, которое заполняется записями из базы данных. Теперь я должен сделать некоторые записи видимыми, но недоступными для выбора, как мне этого добиться?

вот мой код

public class SomeClass extends ListActivity { 
    private static List<String> products; 
    private DataHelper dh; 
    public void onCreate(Bundle savedInstanceState) { 
        dh = new DataHelper(this); 
        products = dh.GetMyProducts();  /* Returns a List<String>*/ 
        super.onCreate(savedInstanceState); 
        setListAdapter(new ArrayAdapter<String>(this, R.layout.myproducts, products)); 
        ListView lv = getListView();
        lv.setTextFilterEnabled(true); 
        lv.setOnItemClickListener( new OnItemClickListener() { 
            @Override 
            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { 
                // TODO Auto-generated method stub 
                Toast.makeText(getApplicationContext(), ((TextView) arg1).getText(), Toast.LENGTH_SHORT).show(); 
            } 
        }); 
    } 
}

Файл макета myproducts.xml выглядит следующим образом:

<?xml version="1.0" encoding="utf-8"?> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:padding="10dp" 
    android:textSize="16sp"> 
</TextView>

1 Ответ

31 голосов
/ 18 апреля 2010

Создайте свой собственный подкласс ArrayAdapter, который имеет AreAllItemsEnabled () , возвращающий false, и определите isEnabled (int position) для возврата true / false для данного элемента в вашем наборе данных.

...