我有一个模板布局,它代表我应用中ListView中的每一行。 这是photorow.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/bodylay"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<ImageView
android:id="@+id/leftbigsquare"
android:layout_width="0dp"
android:layout_height="140dp"
android:layout_weight="1"
android:background="#1000b0"
android:src="@drawable/test1"
/>
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#d0b0b0"
android:textSize="15sp" >
<ImageView
android:id="@+id/righttupperleft"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="#b170b0"
android:src="@drawable/test1" />
<ImageView
android:id="@+id/rightupperright"
android:layout_width="0dp"
android:layout_height="70dp"
android:layout_weight="1"
android:background="#b110b0"
android:src="@drawable/test1" />
</LinearLayout>
<ImageView
android:id="@+id/righthorizontal"
android:layout_width="match_parent"
android:layout_height="70dp"
android:src="@drawable/test1" />
</LinearLayout>
逐行重复。我想要做的是更改“ImageView”子项,当我从服务器加载图像时,不是每次都重新设计行布局。每行将显示不同的“leftbigsquare”,“rightupperleft”,“rightupperright”,“righthorizontal”(查看ImageViews ids)照片。
我研究并看到了一些例子,但他们通过硬编码布局来实现这一点,例如:
LinearLayout A = new LinearLayout(this);
A.setOrientation(LinearLayout.HORIZONTAL);
我想使用我的photorow.xml作为模板,只需在每行中更改其属性,例如source。 是否可以使用我的photorow.xml作为行的模板?
我的自定义适配器:
package com.example.test2;
import java.util.List;
import com.squareup.picasso.Picasso;
import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
public class PhotoAdapter extends BaseAdapter {
private LayoutInflater mInflater;
private List<PhotoRow> rowList;
Activity context = null;
public PhotoAdapter(Activity activity, List<PhotoRow> rows) {
mInflater = (LayoutInflater) activity
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
rowList = rows;
context = activity;
}
@Override
public int getCount() {
return rowList.size();
}
@Override
public Object getItem(int position) {
return rowList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View rowView;
rowView = mInflater.inflate(R.layout.photorow, null);
//Here I get the ImageView of my photorow xml
ImageView leftBigSquare = (ImageView) rowView
.findViewById(R.id.leftbigsquare);
// Here I get the proper URL from rowList by using Picasso framework
Picasso.with(context).load(rowList.get(position).getUrls().get(0))
.resize(50, 50).centerCrop().into(leftBigSquare);
//So how can I put the leftBigSquare ImageView to my photorow template with its proper attributes
return rowView;
}
}
答案 0 :(得分:0)
是的,当然,您可以使用相同的rowview XML,并且每行仍然有不同的数据。
您必须使用自定义适配器,然后从该适配器充气您的行,并根据几个条件更改您的数据。
粘贴自定义适配器代码,我将告诉您如何操作。