
我有一个带有自定义行布局的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所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)