在我的Android應用程序的一部分,我有一個ListView
顯示錶中的條目列表。當用戶點擊ListView
項目時,會顯示此項目的新Intent
。ListView與自定義CursorAdapter不能很好地工作
在新的意向用戶可以在此項目做一些操作如閱讀,編輯,加入最愛(和unfavoriting當項目已收藏)。在詳細意圖變更在其表中的條目的「標記」欄中當它是收藏並當unfavorited。
它工作正常。但問題出在我的主人ListView
。我爲我的ListView
設置了一個自定義CursorAdapter
。我想添加ImageView
,表明天氣條目是收藏或不。在我的ListView
項目的佈局文件中,我爲此添加了一個ImageView
並將其visibility
設置爲GONE
。
我想檢測收藏項目並將其明星ImageView
visibility
設置爲VISIBLE
。然後我在我的設備中運行應用程序。像往常一樣,沒有任何條目是受歡迎的。然後點擊ListView
中的第一個項目,打開該項目的詳細信息頁面。我收藏它,並回到名單。好吧,現在第一個項目上有一個星形圖標,但不僅在這個上,還有其他一些項目。這些錯誤加星標項目的詳細信息頁面表示它不是收藏。所以問題不在於我的數據庫操作。我也檢查顯示標記項目的光標,其.getCount()
也表示只有項目收藏。我找不到問題所在。我寫我的簡化源代碼定製CursorAdapter
波紋管:
public class HereIsMyAdapter extends CursorAdapter {
private final LayoutInflater mInflater;
public HereIsMyAdapter(Context context, Cursor cursor) {
super(context, cursor, true);
mInflater = LayoutInflater.from(context);
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
TextView txtTestText = (TextView) view.findViewById(R.id.txtTestText);
ImageView imgMark = (ImageView) view.findViewById(R.id.imgMark);
txtSureAz.setText(cursor.getString(cursor.getColumnIndex("azname")));
boolean isMarked = cursor.getInt(cursor.getColumnIndex("marked")) == 1 ? true : false;
if (isMarked) {
imgMark.setVisibility(0);
}
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
View view = mInflater.inflate(R.layout.my_list_item, parent, false);
bindView(view, context, cursor);
return view;
}
}
好主意,但沒有工作:(仍有不希望的痕跡。而在不同的項目時重新開啓應用程式 – 2012-02-16 18:40:36
很抱歉,但我才意識到,爲什麼你在NewView的方法調用bindView() ? – juanmhidalgo 2012-02-16 18:45:52
我在一個自定義的CursorAdapter教程中看到它後,我在調用這個方法的時候調用了這個方法,但是結果和我一樣,即使我刪除了這一行 – 2012-02-16 18:52:03