带CheckBox的Android ListView可以区分点击

时间:2012-04-07 14:53:50

标签: android android-listview

我正在尝试使用CheckBox创建一个ListView ... Th ListView应该允许用户同时选择一个项目或打开该项目以选择其中的其他选项。换句话说,ListView应该能够区分复选框上的单击和项目本身的单击。

我尝试使用android.R.layout.simple_list_item_multiple_choice实现它,但这个允许我只检查复选框,即使我在复选框外点击(在项目上)。

任何人都可以帮忙吗? 这是我的代码,

import java.util.ArrayList;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;

public class ListViewActivity extends Activity implements OnItemClickListener {  

ListView directoryList;


/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    final ArrayList<String> contacts = new ArrayList<String>();
    contacts.add("zaid");
    contacts.add("hazem");
    contacts.add("Oubai");


    directoryList= (ListView) findViewById(R.id.directoryList);


    final ArrayAdapter<String> arrayAdapter;
    arrayAdapter = new ArrayAdapter<String>(this,
                                  android.R.layout.simple_list_item_multiple_choice,
                                  contacts);


    directoryList.setAdapter(arrayAdapter);
    directoryList.setOnItemClickListener(this);
    directoryList.setClickable(true);



}

@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {




}

}

1 个答案:

答案 0 :(得分:2)

您需要一个自定义的阵列适配器。在你的getView()中,获取你的复选框并设置OnCheckedChangeListener()

这是一个关于如何制作自己的自定义适配器的教程。该示例具有可单击的文本框,但您可以将其更改为适用于复选框。

http://www.shubhayu.com/android/listview-with-arrayadapter-and-customized-items