问题是,我不想使用包含图像,描述和两个按钮的元素制作ListView。我在我自己的BaseAdapter扩展中创建它们,但是包含ListView的片段正在关闭(在logcat中没有错误..)。我发现,当我没有返回布局类型元素时,ListView运行良好。所以有我的样本'样本线性布局',这是行不通的..有没有可能,在ListView中显示布局?
这是我的代码: 创建零件:
lv = (ListView) getView().findViewById(R.id.main_wall_ambajes_lv);
AmbajAdapter aa = new AmbajAdapter(getActivity().getApplicationContext(), StaticData.ambajes);
lv.setAdapter(aa);
来自适配器的getView方法:
public View getView(int position, View convertView, ViewGroup parent) {
LinearLayout ll = new LinearLayout(getActivity());
ll.setOrientation(LinearLayout.VERTICAL);
ImageView iv = new ImageView(getActivity());
iv.setImageBitmap(placeholderBitmap);
ll.addView(iv);
ll.addView(iv);
ll.addView(iv);
ll.addView(iv);
return ll;
}
答案 0 :(得分:1)
我不知道你为什么没有任何错误,但我认为你没有按照正确的方式行事。
通常您在布局文件夹的xml文件中创建布局,并仅在getView()
中对其进行膨胀,例如如下:
private LayoutInflater mInflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
@Override
public View getView(int position, View view, ViewGroup parent) {
if (view == null) {
view = mInflater.inflate(R.layout.your_custom_layout, parent, false);
}
//your code for setting the image or other things goes here
//for example if you have a textView
TextView textView = (TextView) view.findViewById(R.id.my_textview_id);
textView.setText("my custom text for this cell");
return (view);
}
和your_custom_layout
只是布局的xml文件。
注意由于单元格回收而导致的性能原因我只会在视图为空时对视图进行通知,并且只读取LayoutInflater
上下文并将其放入mInflater
。但是为了获得最佳性能,您应该使用ViewHolder
,但这超出了您的问题范围。