views:

308

answers:

1

I have a list view which is populated via records from the database. Now i have to make some records visible but unavailable for selection, how can i achieve that?

here's my code

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(); 
                                } 
                        } 
                ); 
        } 
}

The layout file myproducts.xml is as follows

<?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  A: 

Make your own subclass of ArrayAdapter that has AreAllItemsEnabled() return false, and define isEnabled(int position) to return true/false for a given item in your data set.

Yoni Samlan