1

我有一个自定义 CursorAdapter,我用它来相应地扩展自定义项目布局和样式,如下面的代码所示。我的问题是,即使来自数据库的数据是正确的,有时也会提供错误的样式信息(所以对于下面的例子,我会得到isEvent == true,但它会继续风格化,好像isEvent == false.

这是一个已知的错误?我做错了什么还是我可以做些什么来解决这个问题?

private class EventAdapter extends CursorAdapter {
    public EventAdapter(Context context) {
        super(context, null);
    }

    @Override
    public View newView(Context context, Cursor cursor, ViewGroup parent) {
        return getLayoutInflater().inflate(R.layout.event_view_list_item, parent, false);
    }

    @Override
    public void bindView(View view, Context context, Cursor cursor) {
        final boolean isEvent = cursor.getInt(EventQuery.IS_EVENT) == Event.EVENT;
        final String eventName = cursor.getString(EventQuery.NAME);
        final TextView eventNameView = (TextView) view.findViewById(R.id.event_name);

        if (isEvent) {
            eventNameView.setText(eventName);
            view.findViewById(R.id.arrow).setVisibility(View.VISIBLE);
            view.findViewById(R.id.in_play_icon).setVisibility(View.GONE);
        } else {
            eventNameView.setText(cursor.getString(EventQuery.NAME));
        }
    }
}
4

1 回答 1

1

我认为这只是Android重用视图的老问题的一个例子。通过重置视图并在适当的地方进行替换,可以解决此问题

于 2011-09-16T16:14:35.640 回答