Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 用SQLite填充ListView_Android_Listview_Android Sqlite - Fatal编程技术网

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
}