ListView中出现每行布局都不同的情形时,要在Adapter中分别处理。如奇数行展示的是图在左字在右,偶数行展示的是字在左图在右,则处理如下:
public class MyAdapter extends BaseAdapter {
private static final String TAG = "MyAdapter";
private Context mContext;
private List<String> mData;
public MyAdapter(Context context, List<String> data){
mContext = context;
mData = data;
}
@Override
public int getCount() {
return mData.size();
}
@Override
public Object getItem(int position) {
return mData.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (0 == position % 2){
MyViewHolder holder = null;
if (null == convertView) {
holder = new MyViewHolder();
convertView = LayoutInflater.from(mContext).inflate(R.layout.left, null);
holder.name = convertView.findViewById(R.id.name);
convertView.setTag(holder);
} else {
holder = (MyViewHolder) convertView.getTag();
}
holder.name.setText("111");
} else {
MyViewHolder holder = null;
if (null == convertView) {
holder = new MyViewHolder();
convertView = LayoutInflater.from(mContext).inflate(R.layout.right, null);
holder.name = convertView.findViewById(R.id.name);
convertView.setTag(holder);
} else {
holder = (MyViewHolder) convertView.getTag();
}
holder.name.setText("222");
}
return convertView;
}
static class MyViewHolder {
TextView name;
}