我是Android新手,我正在尝试做一个简单的应用程序,我必须在应用程序的ListView中显示电话簿中可用的联系人列表,我正在尝试添加每个项目的复选框。当用户选中复选框时,我想要检索该项目。到目前为止,我能够显示列表,但不清楚如何检查复选框检查事件。
我的代码如下:
XML文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<ListView
android:id="@android:id/android:list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight = "1"
android:choiceMode="multipleChoice" android:clickable="true"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id ="@+id/savebutton"
android:text = "save"
/>
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<ListView
android:id="@android:id/android:list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight = "1"
android:choiceMode="multipleChoice" android:clickable="true"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id ="@+id/savebutton"
android:text = "save"
/>
</LinearLayout>
源代码:
public class testcontacts extends ListActivity
{
private ListAdapter adapter = null;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//CheckBox box = (CheckBox)findViewById(R.id.checkbox);
//box.setFocusable(false);
ContentResolver cr = getContentResolver();
Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI,
null, null, null, null);
adapter = new SimpleCursorAdapter
(this, R.layout.contact_entry, cur,new String[] {ContactsContract.Contacts.DISPLAY_NAME}, new int[] {R.id.contactEntryText});
setListAdapter(adapter);
ListView list = getListView();
list.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
}
}
答案 0 :(得分:0)
这将指定项目的位置
.getCheckedItemPositions()
答案 1 :(得分:0)
您可以使用getCheckedItemPosition方法获取已检查项目的位置。一旦有位置,您可以使用findViewById检索项目和isChecked方法进行检查。 这是一个例子:
int pos = list.getCheckItemPosition(); //list being a ListView previously defined
//Look for the checked CheckBox in the particular position
CheckBox checkBox = (CheckBox)findViewById(pos);
if (checkBox.isChecked()) {
//Do something here
}
希望它有所帮助。
答案 2 :(得分:0)
在listView onclick项目中。 这样做..
CheckBox chkBox = (CheckBox) viewRow.findViewById(R.id.checkBoxXML);
此复选框将与点击的listitem复选框具有相同的状态。
答案 3 :(得分:0)
要创建一个侦听listview项目上的点击事件的事件,您可以尝试这样做:
list.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
CheckedTextView textView = (CheckedTextView)view;
textView.setChecked(!textView.isChecked());
switchAlarm(textView.isChecked(),position);
}
});
此代码将更改项目的chacked状态。
我希望它有所帮助。