如何在列表视图中获取多个项目?

时间:2013-08-14 21:03:12

标签: android listview android-contacts

我制作了一个简单的片段,通过简单的布局simple_list_item_multiple_choice显示联系人和复选框。

当我选择联系人时,会标记复选框。

然后我在我的活动中有一个按钮,当点击它时,将创建一组选定的联系人。

我现在的问题是我不知道如何从ListView获取这些联系人。获得这些联系的正确方法是什么?我稍后将使用组和联系信息进行聊天,但此时,创建组应该只将联系人的标识符保存到具有组名和每个参与者的SQLite数据库。我不需要有关如何设置数据库甚至保存到数据库的信息。 (除非你感觉更有帮助:))。现在我只想知道如何从列表视图中获取该标识符。

我应该在投影中添加CONTENT_LOOKUP_URILOOKUP_KEY或其他内容(可能是电话号码吗?),以便我可以将其作为标识符进行检索?我如何实际检索标识符?我可以在ListViewCursorAdapter上拨打什么来检索此信息?

我的片段中的相关部分

private CursorAdapter mAdapter;
private static final String[] PROJECTION ={ContactsContract.Contacts._ID, ContactsContract.Contacts.DISPLAY_NAME_PRIMARY};
private static final String[] FROM = {ContactsContract.Contacts.DISPLAY_NAME_PRIMARY};
private static final int[] TO = {android.R.id.text1};


@Override
public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    mAdapter = new SimpleCursorAdapter(getActivity(), R.layout.simple_list_item_multiple_choice,null,FROM,TO,0 );
}


//initialize an array list to store the identifiers which are selected, assuming identifier is string
private static List<String> identifiers = new ArrayList<String>();

@Override
public void onListItemClick(ListView lv, View v, int position, long id){
    CheckedTextView textView = (CheckedTextView)v;
    textView.setChecked(!textView.isChecked());

    // some code here to send the selected items to an ArrayList which can be
    // passed onto my activity
   listener.onContactsSelected(identifiers);
}


private OnItemSelectedListener listener;

public interface OnItemSelectedListener {
    public void onContactsSelected(List identifiersSelected);
}

我活动中的相关部分:

private static List<String> newGroup = new ArrayList<String>();

@Override
public void onContactsSelected(List identifiersSelected) {
    newGroup = identifiersSelected;
}

//this is the method invoked from pushing the button on my activity

public void CreateNewGroup(View view){
         //save identifiers from newGroup to the DB
}

0 个答案:

没有答案