0

私のAndroidアプリケーションの一部にはListView、テーブルにエントリのリストを表示するがあります。ユーザーがアイテムをタップすると、このアイテムListViewの新しいIntentアイテムが表示されます。

新しいインテントでは、ユーザーはこのエントリに対して、読み取り編集お気に入り(および項目が既にお気に入りに登録されている場合はお気に入りの削除) などの操作を実行できます。詳細インテントでは、テーブル内のエントリの「マーク」列を、お気に入りの場合は1に、お気に入りでない場合は0変更します。

それは正常に動作します。しかし、問題は私のマスターにありListViewます。にカスタムを設定しCursorAdapterましたListViewImageViewエントリがお気に入りかどうかを示す天気を追加したかったのです。ListView私のアイテムのレイアウトファイルで、ImageViewこれに を追加し、 に設定しましvisibilityGONE

お気に入りのアイテムを検出し、その星ImageView visibilityを に設定したいVISIBLE。次に、デバイスでアプリケーションを実行しました。いつものように、どのエントリもお気に入りに登録されていません。ListView次に、開いたこのアイテムの詳細ページの最初のアイテムをタップします。私はそれをお気に入りにして、リストに戻りました。

さて、こぶしのアイテムに星のアイコンがありますが、これだけでなく他のアイテムにもあります。これらの間違ったスター付きアイテムの詳細ページには、お気に入りに追加されていないと表示されます。したがって、問題はデータベース操作にはありません。また、マークされたアイテムを表示するカーソルを確認しましたが、お気に入りのアイテムは1つ.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;
    }

}
4

1 に答える 1

1

あなたは何かで試しましたか?

boolean isMarked = cursor.getInt(cursor.getColumnIndex("marked")) == 1;
if (isMarked) {
    imgMark.setVisibility(View.VISIBLE);
}else{
    imgMark.setVisibility(View.GONE);
}
于 2012-02-16T18:29:33.753 に答える