java - 在 ListView 中使用 List<Custom_Class>

标签 java android

我创建了一个 Contact 类,其中包含 SQL 数据库的一般结构。我希望以列表的形式接收数据,因此我在 MainActivity 中使用以下代码

List<Contact> contacts = db.getAllContacts();
// Error in this line
ArrayAdapter adapter = new ArrayAdapter<List<Contact>>(this, R.layout.activity_main, contacts);

contactList.setAdapter(adapter);

这会产生错误无法解析构造函数

getAllContacts() 看起来像这样

public List<Contact> getAllContacts() {

    List<Contact> contactList = new ArrayList<Contact>();
    // Select All Query
    String selectQuery = "SELECT  * FROM " + TABLE_CONTACTS;

    SQLiteDatabase db = this.getWritableDatabase();
    Cursor cursor = db.rawQuery(selectQuery, null);

    // looping through all rows and adding to list
    if (cursor.moveToFirst()) {
        do {
            Contact contact = new Contact();
            contact.setID(Integer.parseInt(cursor.getString(0)));
            contact.setName(cursor.getString(1));
            contact.setPhoneNumber(cursor.getString(2));
            // Adding contact to list
            contactList.add(contact);
        } while (cursor.moveToNext());
    }

    // return contact list
    return contactList;
}

那么我如何接收列表数据并填充我的列表?

最佳答案

ArrayAdapter 的模板是记录类型,在您的情况下是客户,而不是列表 所以正确的代码是

ArrayAdapter adapter = new ArrayAdapter<Contact>(this, R.layout.activity_main, contacts);

关于java - 在 ListView 中使用 List<Custom_Class>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39956333/

相关文章:

java - ContentModel 无法解析为变量

java - IntelliJ - 运行程序

java - 为什么@Transactional 不能与@Autowired EntityManagerFactory 一起工作?

android - GPS 标记在 android 中捕获的图像

java - Android 后台服务中的线程

android - libgdx:当我使用 Shaperenderer 添加 Actor 时,为什么我的所有 Actor 都没有渲染?

java - MySQL插入然后更新表数据

Java:为堆栈中上面的方法检索它

java - 在构造函数中保存到数据库

android - 使用 Dagger 跨两个/或多个 fragment 和一个 Activity 共享 ViewModel