有没有办法使用多个数组手动填充具有多个列的ListView?我需要构建一个布局的一部分,我想使用ListView但我需要使用数据填充多个View项。由于它不是来自数据库,我不想使用游标,我只想使用几个并行数组。这可能吗?
答案 0 :(得分:1)
根据我已正确解释您的问题,这应该可以使用适配器:
您可以扩展BaseAdaptor,覆盖getView()并让它返回一些ViewGroup,其中包含代表不同列表中数据的小部件。
对选择的ViewGroup进行子类化以构建更易于回收的复合视图:
public class DoubleText extends LinearLayout {
TextView t1, t2;
public DoubleText(Context c) {
super(c);
t1 = new TextView(c);
t2 = new TextView(c);
this.addView(t1, 0);
this.addView(t2, 1);
}
public void setText(String s1, String s2) {
t1.setText(s1);
t2.setText(s2);
}
}
对BaseAdapter进行子类化,但不会显示所需的所有内容,还有更多, 但是应该更容易理解,因为这个的差异越大 与使用适配器的其他示例相比:
public class DoubleAdaptor extends BaseAdaptor {
List<String> lista, listb; // <- these are your paralell arrays, they and the
Context c; // context need to be initialized by some method
@Override
public View getView(int position, View convertView, ViewGroup parent) {
DoubleText recycled = (DoubleText) convertView;
if (recycled == null) {
recycled = new Double(context);
recycled.setText(lista.get(position), listb.get(position));
return recycled;
}
}
此外,您不必在所有行上具有相同的视图类型,即覆盖 getViewTypeCount()给android提供不同视图数量的上限 要使用的类型和getItemViewType(int position)告诉android哪种类型的视图 为特定行回收。
编辑:我建议在适配器(接口)和BaseAdapter(抽象类)和ListAdapter(接口)上查看android开发人员文档,我也忘了告诉你,ListView有一个setAdapter()可能是兴趣。
答案 1 :(得分:0)
可以做到;问题是如何;-)如果你真的想要使用多个并行数组,那么你可能别无选择,只能继承BaseAdapter。如果您正在使用(或可以使用)对象数组,则可以从ArrayAdapter进行更简单的子类化。在后一种情况下,我认为您需要覆盖的唯一方法是getView。
答案 2 :(得分:0)
您是否尝试将其用作主列表适配器? - &GT; https://github.com/commonsguy/cwac-thumbnail
CommonsGuy有很好的例子,并且易于自定义以生成带动态项的ListView。