列表视图在android中显示对象而不是行
我需要生成一个列表视图,其中每一行都有一个图标和一个名称。代码看起来像这样列表视图在android中显示对象而不是行,android,Android,我需要生成一个列表视图,其中每一行都有一个图标和一个名称。代码看起来像这样 public class MyListActivity extends ListActivity { ... ... ArrayList<StringBuilder> categories = new ArrayList<StringBuilder>(); categories.add(new StringBuilder("xyaq")); categories.add(
public class MyListActivity extends ListActivity {
...
...
ArrayList<StringBuilder> categories = new ArrayList<StringBuilder>();
categories.add(new StringBuilder("xyaq"));
categories.add(new StringBuilder("wers"));
categories.add(new StringBuilder("test2"));
categories.add(new StringBuilder("asfda"));
categories.add(new StringBuilder("hoyio"));
ArrayList<RelativeLayout> departments = new ArrayList<RelativeLayout>();
for (StringBuilder category : categories) {
RelativeLayout categoryRow = (RelativeLayout) mInflater.inflate(
R.layout.products_row, null);
ImageView tempImage = (ImageView) categoryRow.getChildAt(0);
tempImage.setBackgroundResource(R.drawable.ic_launcher);
TextView tempTextView = (TextView) categoryRow.getChildAt(1);
tempTextView.setText(category);
departments.add(categoryRow);
}
ArrayAdapter<RelativeLayout> departmentAdaptor = new ArrayAdapter<RelativeLayout>(
this, android.R.layout.simple_list_item_1, departments);
setListAdapter(departmentAdaptor);
}
公共类MyListActivity扩展了ListActivity{
...
...
ArrayList categories=新的ArrayList();
类别。添加(新StringBuilder(“xyaq”);
类别。添加(新StringBuilder(“WER”);
添加(新的StringBuilder(“test2”));
类别。添加(新StringBuilder(“asfda”);
类别。添加(新StringBuilder(“hoyio”);
ArrayList departments=新建ArrayList();
用于(StringBuilder类别:类别){
RelativeLayout categoryRow=(RelativeLayout)mInflater.充气(
R.layout.products_行,空);
ImageView tempImage=(ImageView)categoryRow.getChildAt(0);
tempImage.setBackgroundResource(R.drawable.ic_启动器);
TextView testextview=(TextView)categoryRow.getChildAt(1);
testextview.setText(类别);
部门。添加(类别);
}
ArrayAdapter DepartmentAdapter=新的ArrayAdapter(
这是android.R.layout.simple_list_item_1,部门);
setListAdapter(部门适配器);
}
而products_row.xml如下所示:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<ImageView
android:id="@+id/deptIcon"
android:layout_width="64dp"
android:layout_height="64dp"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:background="#FFFFFF"
android:clickable="false"
android:contentDescription="@string/hello"
android:scaleType="fitXY" />
<TextView
android:id="@+id/deptName"
android:layout_width="fill_parent"
android:layout_height="54dp"
android:layout_alignLeft="@id/deptIcon"
android:layout_marginLeft="80dp"
android:gravity="left|center"
android:textSize="25dp"
android:textStyle="bold" />
</RelativeLayout>
我面临的问题是看不到包含图像和相应文本的行。相反,它显示了相对布局对象的列表。这不是实现您试图实现的目标的正确方法。 您需要为此创建自定义适配器 查看此链接并检查我的答案:
有完整的活动代码,并包含一个扩展ArrayAdapte的内部类MyAdapter。这不是实现您试图实现的目标的正确方法。 您需要为此创建自定义适配器 查看此链接并检查我的答案:
有完整的活动代码,并包含一个扩展ArrayAdapte的内部类MyAdapter。非常感谢@Pankaj。创建自定义适配器成功了!但我很想知道为什么我的实现方式(将列表行的arraylist传递给arrayadapter)不起作用?:-)它不会自动将Relative从ArrayList分配给我们的listview。我们必须手动将数据分配给组件。这就是listview的工作方式哦..好的。知道了。非常感谢您的澄清。非常感谢@Pankaj。创建自定义适配器成功了!但我很想知道为什么我的实现方式(将列表行的arraylist传递给arrayadapter)不起作用?:-)它不会自动将Relative从ArrayList分配给我们的listview。我们必须手动将数据分配给组件。这就是listview的工作方式哦..好的。知道了。非常感谢您的澄清。