0

我的列表视图有问题,数据工作正常,但是当我向下滚动它时,标题不断重复,但我点击它时的内容正在工作。

这是模拟器中的图像。

在此处输入图像描述

这是我数据库中的数据

这是我在列表视图中使用的代码

dataset_cursor = helper.getBooksByTitle2();   
startManagingCursor(dataset_cursor);        
adapter = new ContentAdapter(dataset_cursor);
list.setAdapter(adapter);`

class ContentAdapter extends CursorAdapter{
    ContentAdapter(Cursor c)
    {
        super(LEGALe.this, c);
    }
    public void bindView(View row, Context ctxt, Cursor c)
    {
        ContentHolder holder = (ContentHolder)row.getTag();
        holder.populateFrom(c, helper);
    }
    public View newView (Context ctxt, Cursor c, ViewGroup parent)
    {
        LayoutInflater inflater = getLayoutInflater();
        View row = inflater.inflate(R.layout.row2, parent, false);
        ContentHolder holder = new ContentHolder(row);
        row.setTag(holder);
        return(row);
    }
}

public Cursor getBooksByTitle2()
{
    return (getReadableDatabase().rawQuery("SELECT _id,table_of_content FROM tblContent WHERE title_id='"+ LEGALe.passedVar.toString() +"' ORDER BY table_of_content" , null));
}
4

3 回答 3

0

它与查看项目的回收有关。我认为您没有正确管理getView

但是,我的建议是将您的标题设置为列表标题中的视图,使用addHeaderView. 或者,也许将它完全从ListView中取出(因此它始终可见)并像TextView上面的那样单独设置ListView

于 2012-06-05T07:41:32.047 回答
0

如果您丢失了要在列表视图中显示的数据,正如我在您的问题中看到的那样,android 只会创建在活动中可见的列表项的那么多实例,在您滚动列表后,它会将相同的实例分配给其他项目,依此类推..这就是为什么当你的滚动标题不断重复

例如,如果列表显示 10 个项目,如 item1,item2-------item10 表示在您滚动查看第 11 个项目后创建了 10 个实例 android 为 12 2 个实例分配 1 个实例,依此类推

于 2012-06-05T08:01:15.070 回答
0

您的适配器似乎没有正确实施,请执行以下操作:

dataset_cursor = helper.getBooksByTitle2();
startManagingCursor(dataset_cursor);
adapter = new ContentAdapter(dataset_cursor); list.setAdapter(adapter);

class ContentAdapter extends CursorAdapter
{ 
       ContentAdapter(Cursor c) 
       { 
           super(LEGALe.this, c); 
       } 
       public void bindView(View row, Context ctxt, Cursor c) 
       { 
           //Get Item from Cursor
           //Set values to views
       } 
       public View newView (Context ctxt, Cursor c, ViewGroup parent) 
       { 
            LayoutInflater inflater = getLayoutInflater(); 
            View row = inflater.inflate(R.layout.row2, parent, false); 
            return(row); 
        } 
   }

   public Cursor getBooksByTitle2() 
   { 
        return (getReadableDatabase().rawQuery("SELECT _id,table_of_content FROM tblContent WHERE                title_id='"+ LEGALe.passedVar.toString() +"' ORDER BY table_of_content" , null)); 
   }
于 2012-06-05T08:05:41.120 回答