android – 手动填充ListView

有没有办法使用多个数组手动填充具有多个列的ListView?我需要构建一个布局的一部分,我想使用ListView但我需要使用数据填充多个View项.由于它不是来自数据库,我不想使用游标,我只想使用几个并行数组.这可能吗?

解决方法:

根据我已正确解释您的问题,这应该可以使用适配器:

您可以扩展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().

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...