Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.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
Java 如何显示两种类型的数据库信息?_Java_Android_Android Sqlite - Fatal编程技术网

Java 如何显示两种类型的数据库信息?

Java 如何显示两种类型的数据库信息?,java,android,android-sqlite,Java,Android,Android Sqlite,我试图让我的应用程序显示用户设置的任务的标题,以及他们设置的日期。我只能正确地显示其中一个。如何在没有一个或另一个的情况下同时显示任务标题和月份 我尝试过使用两个不同的while循环,并使用相同的while循环同时设置两个视图 private void updateUI() { ArrayList<String> taskList = new ArrayList<>(); ArrayList<String> Dates = ne

我试图让我的应用程序显示用户设置的任务的标题,以及他们设置的日期。我只能正确地显示其中一个。如何在没有一个或另一个的情况下同时显示任务标题和月份

我尝试过使用两个不同的while循环,并使用相同的while循环同时设置两个视图

private void updateUI() {
        ArrayList<String> taskList = new ArrayList<>();
        ArrayList<String> Dates = new ArrayList<>();
        SQLiteDatabase db = mHelper.getReadableDatabase();
        Cursor cursor = db.query(Assignments.TaskEntry.TABLE, dbCols, null, null, null, null, null);

        while (cursor.moveToNext()) {
            int idx = cursor.getColumnIndex(Assignments.TaskEntry.COL_TASK_TITLE);
            int month = cursor.getColumnIndex(Assignments.TaskEntry.COL_TASK_MONTH);
            taskList.add(cursor.getString(idx));
            Dates.add(cursor.getString(month));
        }

        if (mAdapter == null) {
            mAdapter = new ArrayAdapter<>(this,
                    R.layout.list,
                    R.id.date,
                    Dates);
            mTaskListView.setAdapter(mAdapter);
            mAdapter2 = new ArrayAdapter<>(this,
                    R.layout.list,
                    R.id.task_title,
                    taskList);
            mTaskListView.setAdapter(mAdapter2);
        } else {
            mAdapter.clear();
            mAdapter.addAll(Dates);
            mAdapter.notifyDataSetChanged();
            mAdapter2.clear();
            mAdapter2.addAll(taskList);
            mAdapter2.notifyDataSetChanged();
        }
private void updateUI(){
ArrayList taskList=新建ArrayList();
ArrayList日期=新建ArrayList();
SQLiteDatabase db=mHelper.getReadableDatabase();
Cursor Cursor=db.query(Assignments.TaskEntry.TABLE,dbCols,null,null,null,null);
while(cursor.moveToNext()){
int idx=cursor.getColumnIndex(Assignments.TaskEntry.COL\u TASK\u TITLE);
int month=cursor.getColumnIndex(Assignments.TaskEntry.COL\u TASK\u month);
taskList.add(cursor.getString(idx));
add(cursor.getString(month));
}
if(mAdapter==null){
mAdapter=新阵列适配器(此,
R.layout.list,
R.id.date,
日期);
mTaskListView.setAdapter(mAdapter);
mAdapter2=新阵列适配器(此,
R.layout.list,
R.id.任务名称,
任务清单);
mTaskListView.setAdapter(mAdapter2);
}否则{
mAdapter.clear();
mAdapter.addAll(日期);
mAdapter.notifyDataSetChanged();
mAdapter2.clear();
mAdapter2.addAll(任务列表);
mAdapter2.notifyDataSetChanged();
}

输出应该是数字形式的一个月,然后是用户设置的任务标题。

您设置了两次适配器,只有第二个适配器会显示在列表中。如果要在列表视图中的一行中显示,为什么要使用两个列表

在列表视图中显示自定义数据有几种不同的方法,例如,。或者您可以简单地使用ArrayList并像这样添加数据

String任务=cursor.getString(idx);
字符串日期=cursor.getString(月);
任务列表。添加(任务+“\n”+日期);
或者干脆

taskList.add(cursor.getString(idx)+“\n”+cursor.getString(month));
然后设置适配器

mAdapter=新阵列适配器(此,
R.layout.list,
R.id.任务名称,
任务清单);
mTaskListView.setAdapter(mAdapter);

您只能将适配器1或适配器2设置为tasklistview的适配器,并且根据您设置为最后一个适配器的内容,您可以看到它们的值谢谢!这很有效,是我所寻找的一个很好的替代方案!