具有自定义布局的ListActivity不会调用getview

具有自定义布局的ListActivity不会调用getview,第1张

概述我有一个带有自定义布局的ListActivity.行布局由一个复选框,一个文本视图和一个图像按钮组成.它的后面是一个自定义对象的ArrayList,该对象仅包含一个String和一个布尔值.我想要复选框以反映布尔值,文本视图以反映Sting,右侧的按钮将启动一个动作.我使用ArrayAdapter页上列出的

我有一个带有自定义行布局的ListActivity.行布局由一个复选框,一个文本视图和一个图像按钮组成.

它的后面是一个自定义对象的ArrayList,该对象仅包含一个String和一个布尔值.我想要复选框以反映布尔值,文本视图以反映Sting,右侧的按钮将启动一个动作.

我使用ArrayAdapter页上列出的最后一个构造函数来尝试将所有这些绑定在一起. ArrayAdapter(上下文上下文,int资源,int textVIEwResourceID,List< T>对象)

由于某种原因,textVIEw由对象toString()填充,而不是由getVIEw填充.因此,该复选框根本不会获得布尔值.有任何想法吗?

public class ListSelection extends ListActivity {    private ArrayList<ListItem> List;    private ArrayList<String> deleted;      static private final String TAG = "kinder";    @OverrIDe    public voID onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        Log.d(TAG, "ListSelection.onCreate");           List = new ArrayList<ListItem>();        deleted = new ArrayList<String>();        Intent temp = getIntent();        String[] Listnames = temp.getStringArrayExtra("Listnames");        boolean[] ListStatus = temp.getBooleanArrayExtra("ListStatus");        for (int i = 0; i < Listnames.length; i++) {            List.add(new ListItem(Listnames[i], ListStatus[i]));        }        **setlistadapter(new ArrayAdapter<ListItem>(this, R.layout.selectionListitem, R.ID.text, List));**    }    private class ListItem {        String Listname;        Boolean ListStatus;             public ListItem(String name, boolean status) {            Listname = name;            ListStatus = status;        }        @OverrIDe        public String toString() {            return Listname;        }    }    public class ListItemArrayAdapter extends ArrayAdapter<ListItem> {        int resource;        LayoutInflater vi;        private List<ListItem> items;        public ListItemArrayAdapter(Context context, int _resource, List<ListItem> Listitems) {            super(context, _resource, Listitems);            Log.d(TAG, "ListItemArrayAdapter");            vi = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);            resource = _resource;            this.items = Listitems;        }        @OverrIDe        public VIEw getVIEw(int position, VIEw convertVIEw, VIEwGroup parent) {            Log.d(TAG, "ListItemArrayAdapter.getVIEw");            linearLayout newVIEw;            ListItem item = getItem(position);            if (convertVIEw == null) {                newVIEw = new linearLayout(getContext());                vi.inflate(resource, newVIEw);            } else {                newVIEw = (linearLayout)convertVIEw;            }            TextVIEw textvIEw = (TextVIEw)newVIEw.findVIEwByID(R.ID.text);            Log.d(TAG, item.Listname);            textvIEw.setText(item.Listname);            CheckBox checkBox = (CheckBox)newVIEw.findVIEwByID(R.ID.checkBox);            checkBox.setChecked(item.ListStatus);            return newVIEw;        }    }}

解决方法:

在我看来,您应该替换此行:

setlistadapter(new ArrayAdapter<ListItem>(this, R.layout.selectionListitem, R.ID.text, List));

有了这个:

setlistadapter(new ListItemArrayAdapter<ListItem>(this, R.layout.selectionListitem, List));

就目前而言,您正在使用ArrayAdapter的默认视图生成逻辑,该逻辑将每个数组元素的toString()馈送到TextVIEw.

总结

以上是内存溢出为你收集整理的具有自定义布局的ListActivity不会调用getview全部内容,希望文章能够帮你解决具有自定义布局的ListActivity不会调用getview所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1083707.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-27
下一篇2022-05-27

发表评论

登录后才能评论

评论列表(0条)

    保存