
下面的应该显示的是这个样子的结果

代码这样写的
MainActivity类
public ArrayList<HashMap<String, String>> getSimulationNews(int n) {
ArrayList<HashMap<String, String>> ret = new ArrayList<HashMap<String, String>>();
HashMap<String, String> hm;
String nowTime = "2014-10-30";
for (int i = 0; i < n; i++) {
hm = new HashMap<String, String>();
if (i %7== 0) {
hm.put("title1", "Android 5.0 12大新功能详解" + " " + nowTime);
hm.put("uri1",
"http://img1.cache.netease.com/catchpic/3/37/37FB10D541680D252F2DC04B3F7CB085.jpg");
hm.put("uri2",
"http://img5.cache.netease.com/photo/0011/2014-10-27/A9ITH3QJ5QJ60011.jpg");
hm.put("uri3",
"http://c.hiphotos.baidu.com/news/w%3D638/sign=032f249f3adbb6fd255be6253125aba6/f636afc379310a55e1ec4e90b44543a98326108d.jpg");
ret.add(hm);
} else {
if (i % 2 == 0) {
hm.put("uri",
"http://img1.cache.netease.com/catchpic/3/37/37FB10D541680D252F2DC04B3F7CB085.jpg");
}
if (i % 5 == 0) {
hm.put("uri",
"http://c.hiphotos.baidu.com/news/w%3D638/sign=032f249f3adbb6fd255be6253125aba6/f636afc379310a55e1ec4e90b44543a98326108d.jpg");
} else{
hm.put("uri",
"http://img5.cache.netease.com/photo/0011/2014-10-27/A9ITH3QJ5QJ60011.jpg");
}
hm.put("title", "Android 5.0 12大新功能详解");
hm.put("content",
"Google公司发布全新的Android 操作系统Android 5.0 Lollipop"
+ " " + nowTime);
ret.add(hm);
}
}
return ret;
}
NewListAdapter类
public class NewListAdapter extends BaseAdapter {
private ImageLoader imageLoader = null;// 图像加载
private DisplayImageOptions options = null;// 显示图像加载
static class ViewHolder {
ImageView ivPreview;
ImageView ivPreview1;
ImageView ivPreview2;
ImageView ivPreview3;
TextView tvTitle;
TextView tvTitle1;
TextView tvContent;
}
private Context context;
private List<HashMap<String, String>> news;
public NewListAdapter(Context context, List<HashMap<String, String>> news) {
this.context = context;
this.news = news;
imageLoader = ImageLoader.getInstance();
imageLoader.init(ImageLoaderConfiguration.createDefault(context));
options = new DisplayImageOptions.Builder()
.displayer(new RoundedBitmapDisplayer(0xff000000, 10))
.cacheInMemory().cacheOnDisc().build();
}
@Override
public int getCount() {
return news.size();
}
@Override
public HashMap<String, String> getItem(int position) {
return news.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null) {
convertView = LayoutInflater.from(context).inflate(
R.layout.item_imgnews, null);
holder = new ViewHolder();
holder.tvTitle1 = (TextView) convertView
.findViewById(R.id.tvTitle1);
holder.ivPreview1 = (ImageView) convertView
.findViewById(R.id.ivPreview1);
holder.ivPreview2 = (ImageView) convertView
.findViewById(R.id.ivPreview2);
holder.ivPreview3 = (ImageView) convertView
.findViewById(R.id.ivPreview3);
convertView.setTag(holder);
convertView = LayoutInflater.from(context).inflate(
R.layout.item_news, null);
holder = new ViewHolder();
holder.ivPreview = (ImageView) convertView
.findViewById(R.id.ivPreview);
holder.tvTitle = (TextView) convertView.findViewById(R.id.tvTitle);
holder.tvContent = (TextView) convertView
.findViewById(R.id.tvContent);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.tvTitle1.setText(getItem(position).get("title1"));
imageLoader.displayImage(getItem(position).get("uri1"),
holder.ivPreview1, options);
imageLoader.displayImage(getItem(position).get("uri2"),
holder.ivPreview2, options);
imageLoader.displayImage(getItem(position).get("uri3"),
holder.ivPreview3, options);
imageLoader.displayImage(getItem(position).get("uri"),
holder.ivPreview, options);
holder.tvTitle.setText(getItem(position).get("title"));
holder.tvContent.setText(getItem(position).get("content"));
return convertView;
}
public void addNews(List<HashMap<String, String>> addNews) {
for (HashMap<String, String> hm : addNews) {
news.add(hm);
}
}
}
------解决思路----------------------
你是说 第一行显示标题,下面三个图片,然后下面是ListView么? 你想问什么问题?
------解决思路----------------------
都是listivew,只不过填充数据不同罢了
------解决思路----------------------
最上面的title+三张图片 不要放在ListView里面显示,单独放在LinearLayout中,然后下面是独立的ListView
或者你放在ListView的HeaderView中显示也是可以的,
------解决思路----------------------
你在convertView == null的时候少了convertView.setTag(holder);当然空指针了
------解决思路----------------------
holder = new ViewHolder();
holder.tvTitle1 = (TextView) convertView
.findViewById(R.id.tvTitle1);
holder.ivPreview1 = (ImageView) convertView
.findViewById(R.id.ivPreview1);
holder.ivPreview2 = (ImageView) convertView
.findViewById(R.id.ivPreview2);
holder.ivPreview3 = (ImageView) convertView
.findViewById(R.id.ivPreview3);
convertView.setTag(holder);
convertView = LayoutInflater.from(context).inflate(
R.layout.item_news, null);
holder = new ViewHolder();
holder.ivPreview = (ImageView) convertView
.findViewById(R.id.ivPreview);
holder.tvTitle = (TextView) convertView.findViewById(R.id.tvTitle);
holder.tvContent = (TextView) convertView
.findViewById(R.id.tvContent);
这段写的啥啊,inflate 两次 holder new 了两次,最后一次没set。