急急急!一个显示问题

Guoing_ 2014-11-04 11:11:20

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


代码这样写的
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);
}
}
}

...全文
305 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
哎,真难 2014-11-04
  • 打赏
  • 举报
回复
都是listivew,只不过填充数据不同罢了
Birds2018 2014-11-04
  • 打赏
  • 举报
回复
你是说 第一行显示标题,下面三个图片,然后下面是ListView么? 你想问什么问题?
红袖满楼招 2014-11-04
  • 打赏
  • 举报
回复
第一个item作为headview add进去 或则通过tag值判断都行
Guoing_ 2014-11-04
  • 打赏
  • 举报
回复
引用 12 楼 heaimnmn 的回复:
你为什么要加载两个xml了,写一个item的xml不满足你的需求?
我试试吧 试试写成一个可不可以 出来效果
哎,真难 2014-11-04
  • 打赏
  • 举报
回复
你为什么要加载两个xml了,写一个item的xml不满足你的需求?
Guoing_ 2014-11-04
  • 打赏
  • 举报
回复
引用 10 楼 heaimnmn 的回复:
这个convertView.setTag(holder);应该在最后啊,当你绑定好所有东西的时候才能加

放到最后就成这样子了
哎,真难 2014-11-04
  • 打赏
  • 举报
回复
这个convertView.setTag(holder);应该在最后啊,当你绑定好所有东西的时候才能加
gqjjqg 2014-11-04
  • 打赏
  • 举报
回复
 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。
Guoing_ 2014-11-04
  • 打赏
  • 举报
回复
引用 6 楼 heaimnmn 的回复:
你在convertView == null的时候少了convertView.setTag(holder);当然空指针了
我convertView.setTag(holder);了 在第60行上~
Guoing_ 2014-11-04
  • 打赏
  • 举报
回复
引用 5 楼 birdsaction 的回复:
最上面的title+三张图片 不要放在ListView里面显示,单独放在LinearLayout中,然后下面是独立的ListView 或者你放在ListView的HeaderView中显示也是可以的,
越看越不明白了..上面的不是ListView那怎么去显示?原谅我的愚笨...
哎,真难 2014-11-04
  • 打赏
  • 举报
回复
你在convertView == null的时候少了convertView.setTag(holder);当然空指针了
Birds2018 2014-11-04
  • 打赏
  • 举报
回复
最上面的title+三张图片 不要放在ListView里面显示,单独放在LinearLayout中,然后下面是独立的ListView 或者你放在ListView的HeaderView中显示也是可以的,
Guoing_ 2014-11-04
  • 打赏
  • 举报
回复
引用 2 楼 heaimnmn 的回复:
都是listivew,只不过填充数据不同罢了
我就是只能填上去一种类型的 两个同时添加就出错 特别容易出现空指针
Guoing_ 2014-11-04
  • 打赏
  • 举报
回复
引用 1 楼 birdsaction 的回复:
你是说 第一行显示标题,下面三个图片,然后下面是ListView么? 你想问什么问题?
就是下面listivew的没法显示内容
IOSIOSiOS基于百度地图SDK记录运动轨迹,求大神们给个demo! 要使敌人处于绝境,不可以派兵与敌人发生正面交锋,而是逐步的削弱敌人尚存力量,使敌人逐渐变弱。 匿名发表0人评论99人浏览0收藏 1个回答 0 寒凝雪 要使敌人处于绝境,不可以派兵与敌人发生正面交锋,而是逐步的削弱敌人尚存力量,使敌人逐渐变弱。 0人评论发布于2018-08-03 11:17:27 登录后可回答问题,请 登录 或 注册 等你来答 ios 调起地图app导航 demo 目的地名怎么修改如何在eclipse里面应用高德地图demo android开发求一份百度地图的demo Android studio 启动一直提示Fetchin… 高分求取Android下基于百度地图api的实现地图,定… 请问iOS 百度地图轨迹回放--轨迹是有了(一条线),但… 百度地图sdk demo 怎么使用 android开发怎么修改百度地图sdk demo的固定… ios百度地图demo为什么运行不了 百度富文本 UEditor config.json中怎么… 看了该问题的人还看了 常用API接口汇总 Android 百度鹰眼轨迹SDK(v2.1.6) Phab2 Pro体验 & Tango技术简介 Android 百度地图周边雷达(v6.1.3)及覆盖物 解析百度Apollo自动驾驶平台 Android 百度定位SDK(v6.1.3)结合方向传… [android] 百度地图开发 (三).定位当前位置及… 大牛讲堂|SLAM最终话:视觉里程计 基于OpenLayers+rbush实现高德轨迹样式 [android] 百度地图开发 (一).申请AK显示地… 99 浏览 0 收藏

80,352

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧