gpt4 book ai didi

Android 使用带有 onContentChanged() 的自定义 CursorAdapter

转载 作者:行者123 更新时间:2023-11-29 22:10:22 24 4
gpt4 key购买 nike

我仍在尝试通过在 listView 上使用 cursorAdapter 来编写好的代码。

我希望在我的 Activity 中,当我更改游标中的数据时,它会自动更新适配器中的游标,更新适配器,当然还有 listView。

神奇的是,有一个函数:onContentChanged(),它是 CursorAdapter 的一个函数,当这个适配器的游标被“通知”时被调用。

但是我调用这个函数失败了。

现在是代码中有趣的部分(不起作用),如果有人能告诉我我错在哪里以及我的误解是什么,我将不胜感激。

Activity :

public class EverydayNotesAndroid3Activity extends Activity {
/** Called when the activity is first created. */

private Cursor cursorNotes;
private NoteDataSource dataNoteConnector;
private NotesCursorAdapter notesCursorAdapter;
private InputMethodManager imm;
private Activity activity;
private ListView listView;
private int positionItem;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

activity = this;

dataNoteConnector = new NoteDataSource(activity);

dataNoteConnector.open();

cursorNotes = dataNoteConnector.getAllNotes();

startManagingCursor(cursorNotes);

listView = (ListView) findViewById(R.id.main_list);

notesCursorAdapter = new NotesCursorAdapter(activity, cursorNotes, 3);

listView.setAdapter(notesCursorAdapter);

Button b = new Button(activity);

b = (Button) findViewById(R.id.done);

b.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {

dataNoteConnector.createNoteTop("Hello stack overflow world");


}
});

游标适配器:

@Override


public void onContentChanged(){
System.out.println("foux de fafa");
this.notifyDataSetChanged();
}

让我提醒你我的问题是我想调用这个函数,但它没有被调用。

还有数据库类,但我不知道它是否重要,因为数据库中的插入没问题:

public Cursor create

NoteTop(String note) {

idNoteMin++;
ContentValues values = new ContentValues();
values.put(DataBaseHelper.DATABASE_ID_NOTE, idNoteMin);
values.put(DataBaseHelper.DATABASE_CONTENT_NOTE, note);
long insertId = database.insert(DataBaseHelper.DATABASE_TABLE_NOTE, null,
values);
Cursor cursor = database.query(DataBaseHelper.DATABASE_TABLE_NOTE,
allColumns, DataBaseHelper.DATABASE_ID_NOTE + " = " + insertId, null,
null, null, null);
cursor.moveToFirst();
return cursor;
}

好吧,我的第二个问题:

1) 如何调用我的适配器的 onContentChanged() 函数(当然没有显式调用它)

2) 我想知道我的代码是否是用自定义 cursorAdapter 提供 listView 的好方法。

感谢关注。

最佳答案

它实际上以另一种方式工作,onContentChanged 在适配器收到 notifyDataSetChanged 通知后调用。

尝试将您的按钮点击监听器更改为:

@Override
public void onClick(View v) {

dataNoteConnector.createNoteTop("Hello stack overflow world");
notesCursorAdapter.notifyDataSetChanged();

}

关于Android 使用带有 onContentChanged() 的自定义 CursorAdapter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9782845/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com