0

嗨,我之前曾问过如何更新 listview 并得到使用 ArrayAdapter 的建议。我现在关注的问题是它正在更新 listviews 但不是某些对象的预期值。

我的代码是这样的:

Cursor cursor = db.rawQuery("SELECT count(*) FROM BOOKMARKS ", null);
        //if any contact found moveToFirst of that contacts or points to 1st email 
        cursor.moveToFirst();
        //checking columns exhist or not
        if (cursor.getInt(0) > 0)
        {
            //get all the contacts from table 'BOOKMARKS'
            c = db.rawQuery("SELECT * FROM BOOKMARKS", null);
            //get the index of mentiond and required columns 
            ID = c.getColumnIndex("ID");
            booktitl = c.getColumnIndex("Booktiltle");

            audiotime=c.getColumnIndex("BookmarkTime");

            // Check result.
            c.moveToFirst();
            if (c != null) 
            {
                // Loop through all Results
                do 
                {
                    cont = new String[3];
                    cont[0] = Integer.toString(c.getInt(ID));
                    cont[1] = c.getString(booktitl);
                    cont[2] = c.getString(audiotime);
                    audiobooks.add(cont);

                }
                while(c.moveToNext());

c.close();
                db.close();//close db resources 


                ArrayAdapter<String[]> arrayAdapter1=new ArrayAdapter<String[]>(this,  R.layout.row3, R.id.itemr1,audiobooks);
                lv.setAdapter(arrayAdapter1);

我如何在 listview 上获取字符串值?实际上是从数据库中获取并存储到 Arraylist 中的值。目前我在 listview 上显示一些对象值,但我想显示“有声读物”包含的内容。请帮我解决它。

4

2 回答 2

0

如果我理解正确,您希望使用数据库中每一行的数据填充 ListView。您必须使用与数据库行对应的成员变量创建一个类型为 Audiobook 的新类。然后在您的 res/layouts 文件夹中创建一个布局,该布局必须显示您的对象数据。创建一个扩展 ArrayAdapter 类的新类,您可以在其中使用创建的布局扩展视图并使用子项填充列表视图。然后在您的主目录中将新适配器设置到列表中。

ArrayAdapter 应如下所示:

public class AudiobookAdapter extends ArrayAdapter<Audiobook> {
     //  constructor

     //  here you populate each view and put it in listview
     public View getView (int position, View convertView, ViewGroup parent)
{
    }
}

这是一个起点,您应该阅读更多关于扩展 arrayadapter 和自定义 ListViews 的信息。

于 2012-09-06T11:01:15.683 回答
0

你不能给ArrayAdaptertype String[],因为你给它一个List叫做有声读物。

另外,我不确定标准是否ArrayAdapter可以处理 datatype List<String[]>。它可能不起作用。ArrayAdapter如果它不应该工作,你将不得不通过扩展它来实现你自己的实现。

于 2012-09-06T10:54:27.027 回答