私はまだlistViewでcursorAdapterを使用して良いコードを作成しようとしています。onContentChanged()でカスタムCursorAdapterを使用しているAndroid
私は自分のアクティビティでカーソル内のデータを変更すると、自動的にアダプタ内のカーソルを更新し、アダプタともちろんlistViewを更新したいと考えています。
マジックこの機能は次のとおりです。onContentChanged()このアダプタのカーソルが通知されたときに呼び出されるCursorAdapterの関数です。
しかし、私はこの関数を呼び出すことに失敗しています。
コードの摂食部分は、私が間違っている箇所や誤解がある箇所を教えてもらえれば、感謝しています。
活動:
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");
}
});
CursorAdapter:
@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;
}
[OK]をので、再び、私の2質問:
1)どのようにすることができます
2)自分のコードが、カスタムのcursorAdapterでlistViewに供給するのに適しているのだろうかと思います。
ご注意いただきありがとうございます。
notifyDataSetChangedを呼び出すとうまくいきません。onContentChangedは呼び出されません。 私はそれについて考えようとしているほど、「そんなに簡単なことをするには最高の方法があるに違いない」と思っていますが、それが何であるかは分かりません。私はアンドロイドdevelopperのウェブサイトでさえ、彼らは、リストビューを更新したいときはいつでも、彼らはカーソルを再現し、毎回それをフィードし、新しいアダプタを作成し、カーソルに影響を与え、次にlistViewにアダプタに影響を及ぼす...これは本当に狂気です、私はlistViewとcursorAdapterの適切な使用の例を見たことがないようです –
私は私の答えを編集しました、あなたは何かを試しましたか? –
残念ながら、はい、まだ動作しません。とにかく私のカスタムCursorAdapterに問題がなければならない、それは別の問題であるため、私は自分自身を理解しようとするだろう。助けてくれてありがとう、私はこれをどのようにしたかを教えてくれるだろう(成功すれば)。 –