我制作了一个简单的片段,通过简单的布局显示联系人和复选框simple_list_item_multiple_choice
。
当我选择联系人时,复选框被标记。
然后,我的活动中有一个按钮,单击该按钮将创建一组选定的联系人。
我现在的问题是我不知道如何从 ListView 中获取这些联系人。获取这些联系人的正确方法是什么?稍后我将使用组和联系信息进行聊天,但目前,创建组应该只将联系人的标识符保存到带有组名和每个参与者的 SQLite db。我不需要有关如何设置数据库甚至保存到数据库的信息。(除非你感觉特别有帮助:))。现在我只想知道如何从列表视图中获取该标识符。
我是否应该在 Projection 中包含CONTENT_LOOKUP_URI
或LOOKUP_KEY
其他内容(可能是电话号码?),以便我可以将其检索为标识符?我如何实际检索标识符?我应该调用ListView
或CursorAdapter
来检索此信息?
我的片段中的相关部分
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
}