0

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

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

然后,我的活动中有一个按钮,单击该按钮将创建一组选定的联系人。

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

我是否应该在 Projection 中包含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
}
4

0 回答 0