Android:每个项目的ListView和事件

时间:2013-03-28 19:26:53

标签: android listview event-handling

我在xml中制作了自定义列表视图

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout  xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        >
        <TextView
           ... />
        <TextView
           ... />

        <TextView
            ... />
         <CheckBox
            ...
             />
</RelativeLayout>

我活动的一部分:

public class SPMMainActivity extends Activity {  
        private ArrayList <HashMap<String, Object>> myBooks; 
        private static final String KEY1 = "key1";    
        private static final String KEY2 = "key2";  
        private static final String KEY3 = "key3";  
        private static final String CHECK = "check"; 

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_spmmain);

            schedule_listview = (ListView) findViewById(R.id.MainActivity_schedule);
            myBooks = new ArrayList<HashMap<String,Object>>();      
            HashMap<String, Object> hm;   

            hm = new HashMap<String, Object>();
            hm.put(KEY1, "1First");     
            hm.put(KEY2, "test");    
            hm.put(KEY3, "test2");     
            hm.put(CHECK, Boolean.FALSE);   
            myBooks.add(hm);

            hm = new HashMap<String, Object>();
            hm.put(KEY1, "Second");        
            hm.put(KEY2, "test3");         
            hm.put(KEY3, "test4 ");         
            hm.put(CHECK, Boolean.TRUE);   
            myBooks.add(hm);

            SimpleAdapter adapter = new SimpleAdapter(this, 
                    myBooks, 
                    R.layout.mainactivity_schedule, 
                    new String[]{ 
                    KEY1,         
                    KEY2,        
                    KEY3,
                    CHECK
                    },
                    new int[]{    
                    R.id.text1,  
                    R.id.text2,
                    R.id.text3,
                    R.id.checkBox1}
            );      

            schedule_listview.setAdapter(adapter);                        
            schedule_listview.setChoiceMode(ListView.CHOICE_MODE_SINGLE); 

            registerForContextMenu(schedule_listview);

        }
...
}

如何从每个CheckBox获取事件?例如,如果用户单击复选框,程序必须从第三项的CheckBox中获取事件,然后打开警报。

1 个答案:

答案 0 :(得分:0)

使用Custom Adaptor列表,并在调制解调器的getView()方法中设置侦听器复选框。例如,请参阅Android ListView Examplethis one