2012-06-05 52 views
0

我有我的列表視圖的問題,數據是完美的工作,但即時通訊滾動它的標題不斷重複,但當我點擊它的內容工作。 android listview滾動錯誤

這是模擬器中的圖像。

enter image description here

這是我的數據庫

這裏的數據是我在ListView

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)); 
} 

回答

0

它是與視圖項目的回收使用的代碼。我認爲你沒有正確管理getView

但是,我的建議是使用addHeaderView將標題設置爲列表標題中的視圖。 或者,也許完全從ListView(所以它是不斷可見的),並單獨設置TextView以上的ListView

+0

你可以提供一些代碼因爲我沒有得到它:D感謝您的迴應 – Mordiggian

+0

http://www.vogella.com/articles/AndroidListView/article.html#miscellaneous_headerfooter – waqaslam

+0

感謝您的提示:D它真的不正確的回收,最終得到它的工作。 – Mordiggian

0

如果你丟失的數據顯示在listview裏面,就像我在你的問題中看到的那樣,android只創建那些活動上可見的列表項的多個實例,在你滾動列表之後,它將相同的實例分配給其他項目等等..那就是爲什麼當你的滾動標題不斷重複

例如,如果列表顯示10個項目像item1,item2 ------- item10意味着10個實例創建後,滾動查看第11項android分配1例如12 2實例等等

+0

是否有解決方案,以便listview不會重複顯示的第一個數據? – Mordiggian

+0

你可以發佈你的getview方法 –

+0

http://stackoverflow.com/questions/5500325/list-view-item-repeated-in-android –

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)); 
    }