SimpleCursorAdapter删除值

时间:2011-11-11 15:23:11

标签: java android listview cursor

我的每一行都有一个ListView我有一个LinearLayout,其中有一些对象(大多数是TextViews)。

这个ListView我从光标动态填充它。在这个游标中,我有一个值为true或false。

我想要隐藏或不可点击值为false的行。我尝试这个代码但不起作用

public void contentProviderInitialized(final Cursor cursor) {

    SimpleCursorAdapter commonTickets = new SimpleCursorAdapter(MyClass.this,
        R.layout.row_ticketing, cursor, new String[] {"price", "productName", "stopName" },
        new int[] { R.id.ticketing_price, R.id.ticketing_product, R.id.ticketing_stop_name }
    ) {
        @Override
        public void bindView(View view, Context context, Cursor cursor) {
            String enabledStr = cursor.getString(cursor.getColumnIndex("enabled"));
            String product = cursor.getString(cursor.getColumnIndex("productName"));
            boolean enabled = Boolean.parseBoolean(enabledStr);
            LinearLayout ticketingRow = (LinearLayout) view.findViewById(R.id.ticketing_row);
            if (enabled) {
                ticketingRow.setEnabled(true);
            } else {
                ticketingRow.setEnabled(false);
            }
            super.bindView(view, context, cursor);
        };
        MyClass.this.ticketing_list_view.setAdapter(commonTickets);
    }
}

2 个答案:

答案 0 :(得分:1)

在适配器上覆盖isEnabled

http://developer.android.com/reference/android/widget/BaseAdapter.html#isEnabled(int

这个答案似乎暗示了它。在光标上使用movetoposition。但是,听起来表现不错,所以你可能想根据数字位置做一些真/假值的缓存?试试看。看看它如何。缓存可能是一种浪费。

答案 1 :(得分:0)

这对尝试其他方法很有帮助:

Android - how to delete item from a cursor?

将要查看的位置添加到新的MatrixCursor并将您的光标替换为新的Matrix Cursor