仿QQ空间查看好友动态,ListView嵌套GridView显示接口中的图片

        我是一个刚刚踏上编程道路的菜鸟,第一次写博客想想还有点小激动。

在上一家公司做项目时遇到一个ListView嵌套GridView显示晒单的功能,刚开始想到的就是使用九宫格显示图片,但是在做的过程中没有找到适合的案例,大多都是把数据写在本地,这不乎合我们的要求。所以打算自己写一个。不多说废话,先上效果图:

                                                                                                             

        

我使用的是fastJson和gson进行网络数据的获取。

fastjson链接:http://download.csdn.net/download/first773/9528334

gson链接:http://download.csdn.net/detail/qq_25837957/9316521

在app build gradle中导入glide图片缓存框架  

	compile 'jp.wasabeef:glide-transformations:2.0.1'

解决好三方jar包问题,开始我们的代码工作。

1、首先ListView嵌套GridView是只会显示一行item的,所以我们自定义GridView,重写onMeasure方法重新计算GirdView的高度。

public class ViewGridView extends GridView{

    public ViewGridView(Context context) {
        super(context);
    }

    public ViewGridView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public ViewGridView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        int expandSpec=MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >>2,
                MeasureSpec.AT_MOST);
        super.onMeasure(widthMeasureSpec, expandSpec);
    }
}

2、javaBean直接使用gsonformat生成

3、进行数据请求,这个地方注意把属性请求的方法放到onResume()中,我测试了几次,放到onCreat()中有可能绑定适配器的list集合为空

private void JSON(String s) {
    HandlerUtils.getBytes(s, new HandlerUtils.HandlerCallBack() {
        @Override
        public void fetchData(byte[] bytes) {
            String msg=new String(bytes);
            Result result=Result.parse(msg);
            JSONArray array1=JSON.parseArray(result.getData());
            for (int i = 0; i < array1.size(); i++) {
            JavaBean.DataBean javaBean=new Gson().fromJson(array1.getJSONObject(i).toString(	),JavaBean.DataBean.class);
                childList.add(javaBean);
            }
            adapter=new MyAdapter(context,childList);
            listView.setAdapter(adapter);
            adapter.notifyDataSetChanged();
        }
    });
}

4、接下来就是适配器绑定,主要是listView的adapter中getView绑定GirdView适配器

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    ViewHolder viewHolder=null;
    JavaBean.DataBean data=mList.get(position);
    childBeanList=mList.get(position).getChild();
    if (convertView==null){
        viewHolder=new ViewHolder();
        convertView= LayoutInflater.from(context).inflate(R.layout.layout_item,null);

        viewHolder.iamge_head= (ImageView) convertView.findViewById(R.id.image_head);
        viewHolder.nickName= (TextView) convertView.findViewById(R.id.nickName);
        viewHolder.gridView= (GridView) convertView.findViewById(R.id.girdView);

        convertView.setTag(viewHolder);
    }else{
        viewHolder= (ViewHolder) convertView.getTag();
    }

    viewHolder.nickName.setText(data.getName());

    GridViewAdapter adapter=new GridViewAdapter(childBeanList ,context);
    viewHolder.gridView.setAdapter(adapter);

    String img=data.getIcon();
    if (img!=null){
        Glide.with(parent.getContext()).load(img).into(viewHolder.iamge_head);
    }

    return convertView;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值