我需要制作一个列表视图,左边有一个图像,该图像右侧有一个标题,下面有一个描述。 我已经检查了文档中的列表视图,但我似乎无法找到一个示例。 我有一个XML定义的选项卡视图(根据android示例tabs1),列表视图作为第一个选项卡内容。 但是我想通过RSS新闻源将内容添加到代码中的列表视图中。
我在考虑使用带有html注入字符串的webview但是如何从drawable文件夹中插入图像。 (这些图像只是本地存储的“新闻图标”,而不是来自互联网的图像)
对不起,如果这是一个小小的问题,但任何帮助表示赞赏:)
答案 0 :(得分:10)
我认为您描述的结构是指ListView项的内容。您可以通过为单个项目定义布局来实现此目的。以下代码在类似的情况下对我有用:
<?xml version="1.0" encoding="UTF-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:padding="6dip" android:layout_height="?android:attr/listPreferredItemHeight">
<ImageView
android:id="@+id/result_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentBottom="true"
android:layout_marginRight="6dip"
android:src="@drawable/image1"/>
<TextView
android:id="@+id/result_name"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/result_icon"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_alignWithParentIfMissing="true"
android:gravity="center_vertical"
android:text="Title" />
<TextView
android:id="@+id/result_second_line"
android:layout_width="fill_parent"
android:layout_height="26dip"
android:layout_toRightOf="@id/result_icon"
android:layout_below="@id/result_name"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:singleLine="true"
android:ellipsize="marquee"
android:text="Second line" />
</RelativeLayout>
然后,您需要扩展BaseAdapter以与ListActivity一起使用。您需要对布局进行膨胀,并使用RSS源中的数据填充它。
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Result result = this.results.get(position);
LayoutInflater inflater = (LayoutInflater) context.getSystemService(
Context.LAYOUT_INFLATER_SERVICE);
RelativeLayout view = (RelativeLayout)
inflater.inflate(R.layout.result_item, null, false);
ImageView image = (ImageView) view.findViewById(R.id.result_icon);
image.setImageResource(result.imageResource);
TextView name = (TextView) view.findViewById(R.id.result_name);
name.setText(result.location);
TextView secondLine = (TextView) view.findViewById(R.id.result_second_line);
secondLine.setText(result.shortDescription);
return view;
}
答案 1 :(得分:1)
您也可以在此处查看此页面以获得非常好的布局 android-layout-tricks-1
答案 2 :(得分:0)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<GridLayout
android:id="@+id/gridLayout1"
android:layout_width="match_parent"
android:layout_height="0dip"
android:layout_weight="1.07"
android:columnCount="2" >
<ImageView
android:id="@+id/chkItemImage"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_column="0"
android:layout_gravity="left"
android:layout_row="0"
android:layout_rowSpan="3"
android:src="@drawable/ic_launcher"
android:scaleType="fitXY" />
<TextView
android:id="@+id/chkItemName"
android:layout_column="1"
android:layout_gravity="left"
android:layout_row="0"
android:text=""
android:textAppearance="?android:attr/textAppearanceLarge" />
<TextView
android:id="@+id/chkItemDescription"
android:layout_column="1"
android:layout_gravity="left"
android:layout_row="1"
android:text=""
android:textAppearance="?android:attr/textAppearanceLarge" />
<TextView
android:id="@+id/chkItemPrice"
android:layout_column="1"
android:layout_gravity="left"
android:layout_row="2"
android:text=""
android:textAppearance="?android:attr/textAppearanceLarge" />
</GridLayout>
答案 3 :(得分:0)
您需要设计listview项目以包含textview和imageview。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="40dp"
android:layout_gravity="center_vertical"
android:text="TextView" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="40dp"
android:layout_gravity="center_vertical"
android:text="TextView" />
</LinearLayout>
然后你需要设计listview布局。 然后,您需要通过获取布局inflater来扩充行项目布局。
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View single_row = inflater.inflate(R.layout.list_row, null,
true);