在listview中加载联系人查询

时间:2014-05-23 10:55:24

标签: android android-listview android-contentprovider android-contacts

我试图在列表视图中显示联系人数据。我认为一切都还可以,但是当我执行应用程序时,我遇到了错误java.lang.IllegalStateException: ArrayAdapter requires the resource ID to be a TextView。 代码是这样的:

public class BuscaContactos extends Activity {
    ListView listContactos;
    String opcion;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_busca_contactos);
        listContactos=(ListView)findViewById(R.id.listContactos);
        ArrayList<String> listagente = consultaAgenda();
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(BuscaContactos.this, R.layout.activity_busca_contactos,listagente);
        listContactos.setAdapter(adapter);
        listContactos.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

            }
        });
    }

    private ArrayList<String> consultaAgenda() {
        ArrayList<String> datos = new ArrayList<String>();
        Cursor c = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
        while (c.moveToNext()) {
            String ContactID = c.getString(c.getColumnIndex(ContactsContract.Contacts._ID));
            String nombre = c.getString(c.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
            datos.add(ContactID);
            datos.add(nombre);
        }
        c.close();
        return datos;
    }
}

1 个答案:

答案 0 :(得分:2)

R.layout.activity_busca_contactos应该只包含TextView

如果您想使用其他View,则需要创建CustomAdapter