2013-11-29 52 views
0

我有一個從數據庫獲取日期自定義光標適配器和填充列表,其onlistItemClick聽衆i顯示了連接到該行的視圖,然後再次單擊它隱藏這一觀點,
一切工作正常,但我有兩個問題,
1) - 我有10行,它顯示10,但是當我登錄職位,它只給我這些職位,適合屏幕。
2) - 當我在一排點擊,觀點似乎是連接到該行,但是當我向下滾動,我發現了另一種看法是向下的屏幕上可見,定義光標適配器錯誤的位置

這裏是我的適配器,

public class CustomCursorAdapter extends CursorAdapter { 
    private LayoutInflater mInflater; 

    public CustomCursorAdapter(Context context, Cursor cursor, int flags) { 
     super(context, cursor, flags); 
     mInflater = LayoutInflater.from(context); 
    } 

    @Override 
    public void bindView(View view, final Context context, final Cursor cursor) { 
     TextView textView = (TextView) view.findViewById(R.id.txtview); 
     textView.setText(cursor.getString(cursor.getColumnIndex("text"))); 
    } 

    @Override 
    public View newView(Context context, Cursor cursor, ViewGroup parent) { 
     //in that "list_layout.xml" i made a view that has to show and hide on click listener 
     View rowView = mInflater.inflate(R.layout.list_layout, parent, false); 
     if(cursor.getPosition()%2 != 0) 
     { 
      rowView.setBackgroundResource(R.drawable.list_selector); 
     } 
     return rowView; 
    } 
} 

我正在工作時間以找出問題,但徒勞無功..
請幫助任何護理人員。

+0

對不起,我couldnnt理解你的第二個問題..你能否詳細說明呢? –

+0

它工作正常適合在屏幕上的行,因爲我已經說過,但是當我向下滾動,日誌doew不給新位置 像,如果5條記錄出現在屏幕上,它會給0-4 當我向下滾動,它從0開始.. –

+0

你究竟想要完成什麼? –

回答

0

對問題1的回答:Android會在給定時間初始化適合屏幕的行,而不是一次性處理性能問題。

回答問題2:儘量提供一個else子句是這樣的:

if(cursor.getPosition()%2 != 0) 
{ 
    rowView.setBackgroundResource(R.drawable.list_selector); 
} 
else 
{ 
    rowView.setBackgroundResource(R.deawable.whatever); // your view for even number rows 
} 
0

試着寫getView方法來代替。

例如:

@Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     if (convertView == null) 
      convertView = mInflater 
        .inflate(R.layout.list_layout, parent, false); 
     if (getCursor().getPosition() % 2 != 0) { 
      convertView.setBackgroundResource(R.drawable.list_selector); 
     }else{ 

      convertView.setBackgroundResource(<-Something->); 
     } 
     return convertView; 

    } 

編輯

@Override 
    public void bindView(View view, final Context context, final Cursor cursor) { 
     TextView textView = (TextView) view.findViewById(R.id.txtview); 
     textView.setText(cursor.getString(cursor.getColumnIndex("text"))); 
     if(cursor.getPosition()%2 != 0) 
     { 
      view.setBackgroundResource(R.drawable.list_selector); 
     } 
    } 
+0

我刪除了newview()方法,並使用你的,它給了我錯誤添加未實現的方法newview(),我添加了默認方法,然後getview()沒有調用 –

+0

然後嘗試移動此代碼: if(cursor.getPosition ()%2!= 0) { rowView.setBackgroundResource(R.drawable.list_selector); } bindView也是如此 –