2010-10-26 71 views
0

我使用了一個ListView和一個擴展CursorAdapter的適配器。 listitems包含幾個可以包含任意長度的文本的TextView。 現在的問題是,當視圖(在列表視圖中)被回收時,由於視圖中的前一項需要更大的空間,因此項目可能會比所需的高得多。強制定製cursoradapter不回收視圖

我想,解決方案是以某種方式不允許回收,或只是強制設置的視圖的大小被綁定。我一直在嘗試一些不同的解決方案,但我還沒有找到辦法。有人可以幫我嗎? ;)

@Override 
public View newView(Context context, Cursor c, ViewGroup parent) 
{ 


    settings = ctx.getSharedPreferences("myprefs", 0); 

    View v = inflater.inflate(R.layout.convoview_list_item, parent,false); 
    ctx2 = context; 
    parentGroup = parent;  
    return v; 
} 
@Override 
public void bindView(View v, Context context, Cursor c) 
{ 
    //Adding text etc to my views from the cursor here. 
    } 
+0

您可以完全控制什麼ListView項中的TextViews將顯示...不需要總是需要新鮮實例化的TextViews。請在這裏發佈layout/convoview_list_item.xml的內容,最好和你的bindView()實現一樣。 – 2010-10-26 16:43:56

回答

0

的問題是,在我的bindView實施取得了一定的TextViews「隱形」,而不是「水漲船高」,也因爲這一點,他們拿起了空間,即使你看不到它們。

3

如果您知道列表總是非常小,即10個條目,這是我所做的(重寫這兩個方法)。所以,當視圖被回收時,每個位置都會返回相同的類型。如果你知道你的列表可能會很大,但只能有3-4類型的列表項,然後而不是返回位置,asssign類型0,1,2,等

@Override 
    public int getItemViewType(int position) { 
     return position; 
    } 

    @Override 
    public int getViewTypeCount() { 
     return MAX_ITEMS; 
    }