【发布时间】:2016-01-08 05:06:58
【问题描述】:
我正在制作一个小应用程序,我可以在其中使用内容提供商获取手机的联系人,并将它们显示在列表视图中,如图所示。
我想选择列表视图的一行并自动拨打电话给该特定联系人。我尝试了一些东西,但它们不起作用。有任何想法吗?这是我的代码。
public class MainActivity extends ListActivity implements AdapterView.OnItemClickListener{
ArrayAdapter<String> adapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ContentResolver cr = getContentResolver();
Cursor c = cr.query(ContactsContract.Contacts.CONTENT_URI,
new String[] {ContactsContract.Contacts.DISPLAY_NAME},
null, null, null);
List<String> contacts = new ArrayList<String>();
if (c.moveToFirst()) {
do {
contacts.add(c.getString(c.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)));
} while (c.moveToNext());
}
adapter = new ArrayAdapter<String>(this, R.layout.activity_main, contacts);
setListAdapter(adapter);
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
//The answer should be inside here.
}
}
【问题讨论】:
-
不要创建 POJO 类,不要在循环中迭代
Cursor,不要使用ArrayAdapter,该怎么办?使用SimpleCursorAdapter,仅此而已 -
@pskink 好电话。出于某种原因,我总是忘记 CursorAdapters。从来没有用过很多,
-
@MikeM。至少您知道将它们与基于
Cursor的数据模型一起使用比使用 POJO/loop/ArrayAdapter 要好得多,这里 95% 的人不这样做,更糟糕的是,他们如此顽固地使用不良做法......