0

我需要将两个列表视图合并在一起,并在第一部分和第二部分的结果之间添加两个空白字段。

因为我使用的是游标,所以我使用了“select ... union select ...”并加入了结果,但是我在中间插入空行时遇到了麻烦,因为我给了它们负 id 以便以后识别它们并且它们位于列表的顶部或底部,但我需要它们以某种方式位于两个数据集之间的中间。

另外我需要知道哪些是空字段,以便我可以禁用它们,我也尝试过 MergeCursor 但它重复了我的结果。

4

2 回答 2

1

如果你使用 CommonWare 的MergeAdapter,它应该很容易达到你想要的结果。

它需要多个列表(您也可以添加单独的视图,因此可以插入空行)并将它们放在一起以在列表中使用。

这是我最近给出的答案的链接,对如何使用 MergeAdapter 进行了更深入的解释。

编辑

听起来您使用 UNION 和 JOIN 的查询在游标中为您提供了重复的结果。尝试将它们分成两个单独的游标。然后创建两个列表适配器和两个空视图,并将它们全部添加到合并适配器中并将其设置为列表视图。

lv = (ListView) v.findViewById(android.R.id.mergelist);

Cursor c1 = db.fetchCursor1();
String[] from1 = new String[] { DB.ITEM_1 };
int[] to1 = new int[] { R.id.ListItem1 };
SimpleCursorAdapter ca1 = new SimpleCursorAdapter(getActivity(),
    R.layout.your_layout, c1, from1, to1);

Cursor c2 = db.fetchCursor2();
String[] from2 = new String[] { DB.ITEM_1 };
int[] to2 = new int[] { R.id.ListItem1 };
SimpleCursorAdapter ca2 = new SimpleCursorAdapter(getActivity(),
    R.layout.your_layout, c2, from2, to2);

View Blank1 = getLayoutInflater.inflate(R.layout.blank);
View Blank2 = getLayoutInflater.inflate(R.layout.blank);

myMergeAdapter = new MergeAdapter();
myMergeAdapter.addAdapter(ca1);
myMergeAdapter.addView(Blank1);
myMergeAdapter.addView(Blank2);
myMergeAdapter.addAdapter(ca2);

lv.setAdapter(myMergeAdapter);
于 2012-05-14T13:01:39.350 回答
0

我认为您可以使用一个简单的技巧。通常使用具有正 ID 的空行添加您的行。维护空行的 id,您可以禁用它们。

ArrayList <int> empty_row_id = new ArrayList<int>();


if (rows is empty) {
     empty_row_id.Add(row_id);
}

每当您填写该行时,只需搜索 id 并从 empty_row 中删除

希望对你有帮助。。

于 2012-05-14T12:34:01.073 回答