有人可以帮我解决这个问题吗?我有两个光标项目。
- 一键获取时间数据
- 还有一个从数据库中获取任务名称。
但它只在 ListView 中设置任务。当我删除任务光标时,它会设置时间,但不能同时设置两者。
我想要这个作为列表:时间 - 任务名称
这是它的代码部分:
public void updateUI() {
helper = new TaskDBHelper(MainActivityPhone.this);
SQLiteDatabase sqlDB = helper.getReadableDatabase();
Cursor cursor = sqlDB.query(TaskContract.TABLE,
new String[]{TaskContract.Columns._ID, TaskContract.Columns.TIME},
null, null, null, null, TaskContract.Columns.TIME + " ASC");
Cursor cursor2 = sqlDB.query(TaskContract.TABLE,
new String[]{TaskContract.Columns._ID, TaskContract.Columns.TASK},
null, null, null, null, TaskContract.Columns.TIME + " ASC");
listAdapter = new SimpleCursorAdapter(
this, R.layout.task_view,cursor,
new String[]{TaskContract.Columns.TIME, TaskContract.Columns.TASK},
new int[]{R.id.timeTextView, R.id.taskTextView},
0
);
// Log.v("Cursor Object", DatabaseUtils.dumpCursorToString(cursor));
/* Cursor cursor2 = sqlDB.query(TaskContract.TABLE,
new String[]{TaskContract.Columns._ID, TaskContract.Columns.TASK},
null, null, null, null, TaskContract.Columns.TIME + " ASC");
listAdapter = new SimpleCursorAdapter(
this,
R.layout.task_view,
cursor2,
new String[]{TaskContract.Columns.TASK},
new int[]{R.id.taskTextView},
0
);*/
ListView listView = (ListView) findViewById(R.id.list);
listView.setAdapter(listAdapter);
}
Best Answer-推荐答案 strong>
你可以做的几件事:
创建您自己的光标适配器,这样您就可以传递 2 个光标,并根据需要显示数据。
将游标与您需要的数据合二为一,这样您就可以使用标准适配器了。
将光标组合到一个字符串数组中。所以你会得到你需要的数据并将其保存在字符串中,例如:时间 - 任务名称。然后使用 ArrayAdapter 填充 ListView。
如果您稍微搜索一下,我认为所有这 3 种方法都有足够的代码。我认为问题在于当前适配器没有组合两个表的逻辑。
关于java - ListAdapter 在 ListView 中只添加一种类型的数据,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/34742401/
|