是否可以使用List填充ListView

时间:2014-07-21 00:47:44

标签: 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方法中,我只是调用上面的方法并获取List如下:

@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

我见过的每个例子都是使用string类型的ArrayList创建一个Adapter并将该arraylist作为第三个参数传递给Adapter。

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

1 个答案:

答案 0 :(得分:2)

您正在寻找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();
}

如果你想要一个自定义视图(除了简单的TextView以外的东西出现在ListView中),那么你将不得不使用自定义类扩展ArrayAdapter。