0

在我的 android 应用程序的一部分中,我有一个ListView显示表中的条目列表。当用户点击一个ListView项目时,会显示该项目的新Intent项目。

在新的意图中,用户可以对该条目进行一些操作,如阅读编辑收藏(以及当项目已经收藏时取消收藏)在详细意图中,我将其表中条目的“标记”列更改为1当它被收藏时和0不受欢迎

它工作正常。但问题出在我的主人身上ListView。我CursorAdapter为我的ListView. 我想补充ImageView一点,表明天气条目是否被收藏。在我的ListView项目的布局文件中,我为此添加了一个ImageView并将其设置visibilityGONE.

我想检测收藏的项目并将其星号设置ImageView visibilityVISIBLE。然后我在我的设备中运行该应用程序。像往常一样,没有一个条目被收藏。然后点击打开该项目的ListView详细信息页面中的第一个项目。我喜欢它并回到列表。

好的,现在第一个项目上有一个星形图标,但不仅在这个上,还有其他一些项目。这些错误星标项目的详细信息页面显示它不是收藏夹。所以问题不在于我的数据库操作。我还检查了显示标记项目的光标,.getCount()它还说只有1 个项目收藏。我找不到问题出在哪里。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 回答