Android 如何在没有XML的情况下派生BaseAdapter并自定义视图?

Android 如何在没有XML的情况下派生BaseAdapter并自定义视图?,android,Android,我不想为视图引用资源(也称为XML布局),甚至不想使用充气器服务 我已经看到了许多列表视图示例页面,但每个人似乎最多都是从ArrayAdapter或CursorAdapter派生类 那么,有谁能给我举个例子,说明如何从BaseAdapter派生一个类,并通过修改其“getView”方法在其中生成自定义列表视图 您可以在Java中以编程方式创建视图并设置其属性。如果您熟悉AWT/Swing,它几乎与使用AWT/Swing相同 public class MyAdapter extends BaseA

我不想为视图引用资源(也称为XML布局),甚至不想使用充气器服务

我已经看到了许多列表视图示例页面,但每个人似乎最多都是从ArrayAdapter或CursorAdapter派生类


那么,有谁能给我举个例子,说明如何从BaseAdapter派生一个类,并通过修改其“getView”方法在其中生成自定义列表视图

您可以在Java中以编程方式创建视图并设置其属性。如果您熟悉AWT/Swing,它几乎与使用AWT/Swing相同

public class MyAdapter extends BaseAdapter {
    private List<String> items; // could be an array/other structure 
                                // using Strings as example

    public MyAdapter(Context context, List<String> items) {
        this.context = context;
        this.items = new ArrayList<String>(items);
    }

    public int getCount() {
        return items.size();
    }

    // notice I changed the return type from Object to String
    public String getItem(int position) {
        return items.get(position);
    }

    public View getView(int position, View convertView, ViewGroup parent) {
        // Really dumb implementation, you should use the convertView arg if it isn't null
        TextView textView = new TextView(context);
        textView.setText(getItem(position);
        /* call other setters on TextView */

        return textView;
    }
}
公共类MyAdapter扩展了BaseAdapter{
私有列表项;//可以是数组/其他结构
//以字符串为例
公共MyAdapter(上下文、列表项){
this.context=上下文;
this.items=新阵列列表(items);
}
public int getCount(){
返回items.size();
}
//注意,我将返回类型从Object更改为String
公共字符串getItem(int位置){
返回项目。获取(位置);
}
公共视图getView(int位置、视图转换视图、视图组父视图){
//真正愚蠢的实现,如果convertView参数不为null,则应该使用它
TextView TextView=新的TextView(上下文);
setText(getItem(位置);
/*调用TextView上的其他设置程序*/
返回文本视图;
}
}

您可能需要覆盖其他一些方法,但它们应该是非常自解释的。

您对ArrayAdapter或CursorAdapter有什么问题。请指定您的要求,您反对的是什么约定ArrayAdapter的问题如上所述,我不想处理XML来生成视图。I使用CursorAdapter的问题是,我不打算在这里处理SQL db,因为我需要一个简单的列表实现。谢谢。我能够在没有XML的情况下生成列表视图。但是我还有一个问题。我无法在我准备的文本视图中添加任何其他视图,如按钮等。我如何才能做到这一点?当我尝试将布局参数应用于我创建的新按钮,然后应用程序崩溃。您无法将按钮添加到
文本视图
。您需要创建
线性布局
(或
视图组
的其他子类)并将视图添加到其中。您可以从
getView()
返回布局。