我需要在一个中加入两个列表视图,并在第一个和第二个部分的结果之间添加两个空白字段。
由于我使用的是游标,我使用了“select ... union select ...”并加入了结果,但是我无法在中间插入空行 因为我给他们消极的ID以便稍后识别它们并且它们位于列表的顶部或底部,但我需要它们以某种方式在两个数据集之间的中间。
此外,我需要知道哪些是空字段,以便我可以禁用它们,我也尝试过MergeCursor但它复制了我的结果。
答案 0 :(得分:1)
如果你使用CommonWare的MergeAdapter,那么实现你想要的结果应该非常简单。
它将需要多个列表(您也可以添加单个视图,因此可以插入空行)并将它们放在一起以便在列表中使用。
以下是我最近给出的答案的link,更深入地解释了如何使用MergeAdapter。
修改强>
听起来你的UNION和JOIN查询会在游标中给你重复的结果。尝试将它们分成两个单独的游标。然后创建两个列表适配器和两个空视图,并将其全部添加到mergeadapter并将其设置为listview。
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);
答案 1 :(得分:0)
我认为你可以使用一个简单的技巧。通常使用带有正ID的空行添加行。保持空行的id,你可以禁用它们。
ArrayList <int> empty_row_id = new ArrayList<int>();
if (rows is empty) {
empty_row_id.Add(row_id);
}
无论何时填写该行,只需搜索id并从empty_row中删除
希望它会帮助你..