1

我正在尝试显示所有联系人的 ListView 并使用户能够选择多个记录。我想使用 ListView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE) 但我不知道如何在这里应用它。下面的代码提取了一个联系人列表,但我无法从中进行选择。

非常感谢任何提示

干杯

public class addContacts extends ListActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.add_contacts);


    Uri allContacts = Uri.parse("content://contacts/people");
    Cursor c = managedQuery(allContacts, null, null, null, null);

    String[] columns = new String[] {
            ContactsContract.Contacts.DISPLAY_NAME,
            ContactsContract.Contacts._ID };
    int[] views = new int[] { R.id.contactName, R.id.contactID };

    SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
            R.layout.add_contacts, c, columns, views);
    this.setListAdapter(adapter);

}

}

4

1 回答 1

2

由于您使用的是 ListActivity,您可以使用 获取 ListView ,请getListView()使用:

getListView().setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);

但我注意到您使用的布局不正确:

setContentView(R.layout.add_contacts);
...
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
        R.layout.add_contacts, c, columns, views);

明白:

  • 传递给的布局setContentView()应该有一个带有 id 的 ListView android:id="@android:id/list"
  • 传递给 SimpleCursorAdapter 的行布局不应该ListView...您正在尝试在每一行上创建一个 ListViews 的 ListView。

尝试使用这样的内置布局:

public class addContacts extends ListActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Uri allContacts = Uri.parse("content://contacts/people");
        Cursor c = managedQuery(allContacts, null, null, null, null);

        String[] columns = new String[] {
                ContactsContract.Contacts.DISPLAY_NAME,
                ContactsContract.Contacts._ID };
        int[] views = new int[] { android.R.id.text1, android.R.id.text2 };

        SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
                android.R.layout.simple_list_item_2, c, columns, views);
        this.setListAdapter(adapter);
        getListView().setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
    }
}
于 2012-12-21T19:01:56.243 回答