使用分隔线将两个光标列表视图连接在一起

时间:2012-05-14 11:39:10

标签: android android-layout

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

由于我使用的是游标,我使用了“select ... union select ...”并加入了结果,但是我无法在中间插入空行 因为我给他们消极的ID以便稍后识别它们并且它们位于列表的顶部或底部,但我需要它们以某种方式在两个数据集之间的中间。

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

2 个答案:

答案 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中删除

希望它会帮助你..