Android 用SQLite填充ListView
我正在创建一个应用程序,您可以在其中插入要执行的任务并修改它们。我目前可以查看我创建的列表中的任务,但是当我单击列表时,只显示标题,而其他条目不显示 在输入屏幕中,我有一个代码,该代码用以前的信息填充输入屏幕:Android 用SQLite填充ListView,android,listview,android-sqlite,Android,Listview,Android Sqlite,我正在创建一个应用程序,您可以在其中插入要执行的任务并修改它们。我目前可以查看我创建的列表中的任务,但是当我单击列表时,只显示标题,而其他条目不显示 在输入屏幕中,我有一个代码,该代码用以前的信息填充输入屏幕: mSaveButton = (ImageButton) findViewById(R.id.diaryform_ib_save); Log.i(TAG,"Field Title: "+ mTitle); Intent showTitle = getIntent();
mSaveButton = (ImageButton) findViewById(R.id.diaryform_ib_save);
Log.i(TAG,"Field Title: "+ mTitle);
Intent showTitle = getIntent();
String fieldTitle = showTitle.getStringExtra(Constants.DIARY_TITLE);
Log.i(TAG,"Field Title 2: "+ fieldTitle);
mTitle.setText(fieldTitle);
Intent showEntry = getIntent();
String fieldEntry = showEntry.getStringExtra(Constants.DIARY_ENTRY);
mEntry.setText(fieldTitle);
Log.i(TAG,"Field Entry: "+ mEntry);
Log.i(TAG,"Field Entry 2: "+ fieldEntry);
我在那里有日志消息,这样我就可以看到提供了什么信息。对于fieldTitle,传递标题;对于fieldEntry,传递null。当我创建两个字段标题时,两个字段都用标题填充
在我的ListActivity类中,我有以下代码段:
diaryDAO = new DAO(this); //Creates an instance of the DAO
Cursor diaryCursor = diaryDAO.queryDiary(Diary.DiaryItem.LIST_PROJECTION, null, null);
Log.i(TAG, "I get to here!");
String[] diaryDataColumns = { Diary.DiaryItem.COLUMN_NAME_DIARY_TITLE,Diary.DiaryItem.COLUMN_NAME_DIARY_ENTRY };
Log.i(TAG, "Also here");
int[] viewIDs ={ R.id.textView1 };
Log.i(TAG, "Diary Data Col" +diaryDataColumns);
Log.i(TAG, "I'm here");
//Creates backing adapter for the ListView
@SuppressWarnings("deprecation") s
SimpleCursorAdapter diaryAdapter= new SimpleCursorAdapter(
this,
R.layout.activity_diary_list,
diaryCursor,
diaryDataColumns,
viewIDs
);
Log.i(TAG, "Now im here");
this.setListAdapter(diaryAdapter);
在创建diaryDataColumns字符串的地方,我尝试添加了Diary.DiaryItem.COLUMN\u NAME\u Diary\u条目,但它不会显示在条目屏幕中,但当我将Diary.DiaryItem.COLUMN\u NAME\u Diary\u标题更改为条目时,列表视图中会显示给定的条目
有什么想法吗?对我做错了什么有点困惑
谢谢
编辑:
在我看来,你给出了两列,但只有一个文本视图。第一列数据将在文本视图中填充,但我认为,第一列中没有数据,但第二列包含数据,当您切换它们时,该数据将在文本视图中填充。使用两个文本视图进行尝试。
但我认为与内容提供商合作是一种有效的方式,vogella.com上有一个很好的教程。既然您使用的是SQLite,我建议您考虑使用
SQLiteOpenHelper
。通常,您可以从Android API中对该类进行子类化,然后使用它来实现ContentProvider
。ContentProvider
子类依次将Cursor
s传递到您的应用程序,该应用程序可由CursorAdapter
使用。我建议您从一个SimpleCursorAdapter
开始,然后从那里定制它。您还应该了解CursorLoader
s,它允许您在单独的线程上从数据库加载数据。有关更多详细信息,请参阅。您不需要多次调用getIntent,您如何将其他活动中的数据作为额外数据放入intent,请向我们展示代码
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
Intent openItem = new Intent(this, DiaryEntryActivity.class);
Cursor listCursor = (Cursor)l.getAdapter().getItem(position);
openItem.putExtra(Constants.DIARY_TITLE, listCursor.getString(1));
startActivity(openItem); //Starts the intent actions
}