android - 是否可以用 List 填充 ListView

标签 android android-listview populate

我是 android 的新手,正在创建一个小应用程序,我从 sqlite 数据库获取数据并尝试从中生成 ListView 。

我的数据库助手类方法从表中获取数据:

public List<TestClass> getDataFromDb() 
{
    // open database conneciton

    List<TestClass> contactList = new ArrayList<TestClass>();

    // Select All Query
    String selectQuery = "SELECT * from mytable";

    Cursor cursor = myDatabase.rawQuery(selectQuery, null);

    // looping through all rows and adding to list
    if (cursor.moveToFirst()) 
    {
        do {
            TestClass test = new TestClass();

            test.setName(cursor.getString(0));
            test.setAddress(cursor.getString(1));

            // Adding data to list
            contactList.add(test);
        }
        while (cursor.moveToNext());
    }
    return contactList;
}

并且在我的MainActivity.java 类的onCreate 方法中,我只是简单地调用上面的方法并获取列表如下:

@Override
public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    DbAdapter info = new DbAdapter(this);

    List<TestClass> nameList = info.getDataFromDb();

    // Get a ListView from main view
    // ListView itcItems = (ListView) findViewById(R.id.listMainView);

    // set the ListView with "nameList"
}

我遇到的问题是如何在执行 List nameList = info.getDataFromDb();

后填充 ListView

我看到的每个示例都使用字符串类型的 ArrayList 创建适配器,并将该数组列表作为第三个参数传递给适配器。

有没有办法通过传递 nameList 来生成 ListView ?

最佳答案

您正在寻找一个 ArrayAdapter。最简单的方法是这样的:

        ArrayAdapter<TestClass> adapter = new ArrayAdapter<TestClass>(this, android.R.layout.simple_list_item_1, nameList); 
        itcItems.setListAdapter(adapter); 

请注意,这种简单的方法将在 ListView 中显示 TestClass.toString() 的值。如果您希望文本具有不同的值,请覆盖 TestClass.toString。

要更改显示文本的值,请在您的 TestClass 中包含以下方法:

@Override
public String toString() {
    return getName();
}

如果您想要一个自定义 View (除了简单的 TextView 之外的其他东西出现在 ListView 中),那么您将必须使用自定义类扩展 ArrayAdapter。

关于android - 是否可以用 List 填充 ListView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24856330/

相关文章:

android - ExpandableListView 中的 EditText - 打开软键盘时保持焦点

android - 以编程方式为Android手机选择主题

Android:编辑/system/etc/host文件

android - addHeaderView 的问题和缺少列表分​​隔符

android - 从 ListView Android 中获取所有选中的项目

java - 使用 JFileChooser 并预先填充文件名保存?

node.js - Mongoose 模式继承和模型填充

javascript - Sails JS - 相同模型和属性的深度填充

android - 严格模式 : How to disable "Untagged socket detected" in Android for targetSdk >= 28

Android - 加密密码