我制作了一个简单的片段,通过简单的布局simple_list_item_multiple_choice
显示联系人和复选框。
当我选择联系人时,会标记复选框。
然后我在我的活动中有一个按钮,当点击它时,将创建一组选定的联系人。
我现在的问题是我不知道如何从ListView获取这些联系人。获得这些联系的正确方法是什么?我稍后将使用组和联系信息进行聊天,但此时,创建组应该只将联系人的标识符保存到具有组名和每个参与者的SQLite数据库。我不需要有关如何设置数据库甚至保存到数据库的信息。 (除非你感觉更有帮助:))。现在我只想知道如何从列表视图中获取该标识符。
我应该在投影中添加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
}