如何动态地将视图添加到自定义游标适配器..?

时间:2012-02-28 14:00:36

标签: java android sqlite listview

如何动态地将视图添加到自定义游标适配器..列表视图的每一行看起来像..

<?XML version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="wrap_content" android:orientation="horizontal"
android:layout_width="fill_parent">



<TextView android:layout_height="wrap_content"
android:layout_width="fill_parent" android:layout_weight=".9"
android:id="@+id/book_name" android:text="Default"
android:textStyle="bold" />




<TextView
    android:id="@+id/tick"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:gravity="right"
    android:text="NOT ADDED" />

</LinearLayout>

并且适配器看起来像.. ::

package com.himanshu;

import android.content.Context;
import android.database.Cursor;
import android.text.format.DateUtils;
import android.view.View;
import android.widget.SimpleCursorAdapter;
import android.widget.TextView;

public class ListViewAdapter extends SimpleCursorAdapter 
{ 
    static String[] FROM={DbHelper.BOOK_NAME };
    static int[] TO ={R.id.book_name};

public ListViewAdapter(Context context, Cursor c)
{ 
super(context, R.layout.row, c, FROM, TO);
}
// This is where the actual binding of a cursor to view happens
@Override
public void bindView(View row, Context context, Cursor cursor) 
{ 
super.bindView(row, context, cursor);

int flag = cursor.getInt(cursor.getColumnIndex(DbHelper.FLAG));
if(flag==1)
{
TextView tick = (TextView) row.findViewById(R.id.tick); 
tick.setText("ADDED"); 
}
}
}

我使用过SimpleCursorAdapter,因为我想通过数据库访问数据... 现在,当活动正在运行时,数据库中有一些插入,我必须在列表视图中显示..

2 个答案:

答案 0 :(得分:1)

您应该使用CustomAdapter并覆盖getView(位置)以实现此功能。

答案 1 :(得分:0)

当数据发生变化时,您必须使用

更改光标
changeCursor(your_new_cursor);

您之前给适配器的光标将被关闭。