Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 自定义适配器问题。_Android_Android Layout_Android Widget - Fatal编程技术网

Android 自定义适配器问题。

Android 自定义适配器问题。,android,android-layout,android-widget,Android,Android Layout,Android Widget,我正在尝试构建一个包含复选框、文本视图和图像的ListView,它应该以可滚动列表的形式逐行重复 我遵循了,但在自定义xml文件并在中引用时出错: setListAdapter(新的ArrayAdapter(此,R.layout.list_项,国家/地区)) 我确信,我需要一个定制的适配器,可以将每个国家的名称放在相应的行中,但不能理解如何做。你能帮帮我吗。非常感谢 以下是创建包含多个数据段的自定义ListView行所需的高级步骤 创建一个类来保存每行所需的数据。在本例中,它看起来是一个布尔值、

我正在尝试构建一个包含复选框、文本视图和图像的ListView,它应该以可滚动列表的形式逐行重复

我遵循了,但在自定义xml文件并在中引用时出错:

setListAdapter(新的ArrayAdapter(此,R.layout.list_项,国家/地区))


我确信,我需要一个定制的适配器,可以将每个国家的名称放在相应的行中,但不能理解如何做。你能帮帮我吗。非常感谢

以下是创建包含多个数据段的自定义ListView行所需的高级步骤

  • 创建一个类来保存每行所需的数据。在本例中,它看起来是一个布尔值、一个字符串和一个可绘制的或可绘制的id。我们把这个班叫做Foo
  • 为列表行创建自定义布局xml文件(以下称为自定义列表布局)
  • 创建一个名为FooAdapter的自定义适配器,该适配器将获取其构造函数中的foo列表

  • 在FooAdapter的getView()方法中,您将膨胀此行的自定义视图,按id查找所有元素,并用来自Foo的数据填充它们。大概是这样的:

    公共类FooAdapter扩展了ArrayAdapter{

    private List<Foo> foos;
    
    public FooAdapater(Context ctx, int textViewResourceId, ArrayList<Foo> items) {
        super(ctx, textViewResourceId, items);
        this.foos = items;
    }
    
    @Override
    public View getView(int pos, View view, ViewGroup parent) {
        final LayoutInflater inflater = parent.getLayoutInflater();
        final View entry = inflater.inflate(R.layout.custom_list_layout, null);
        Foo foo = foos.get(position);
        TextView tv = (TextView) entry.findViewById(R.id.custom_layout_text_view);
        tv.setText(foo.getTitle());
            // do the same for the checkbox and image
        return v;
    }
    
    私有列表foos;
    公共FooadPater(上下文ctx、int-textViewResourceId、ArrayList项){
    超级(ctx、textViewResourceId、items);
    this.foos=项目;
    }
    @凌驾
    公共视图getView(int pos、视图视图、视图组父视图){
    最终LayoutFlater充气器=父级.getLayoutFlater();
    最终视图条目=充气机。充气(R.layout.custom\u list\u layout,null);
    Foo-Foo=foos.get(位置);
    TextView tv=(TextView)entry.findViewById(R.id.custom\u layout\u text\u view);
    tv.setText(foo.getTitle());
    //对复选框和图像执行相同的操作
    返回v;
    }
    
    }

  • 最后,在活动中实例化此适配器,而不是传入列表的“new ArrayAdapter”


  • 太模糊了,相反,在尝试实现上述自定义适配器时,尝试询问您面临的具体挑战。