自定义ArrayAdapter深入

如果数据来源是Json的情况下:

  //从json对象中获得user对象
    public User(JSONObject object) {
        try {
            this.name = object.getString("name");
            this.hometown = object.getString("hometown");
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }

    //将一组user对象存储在数组列表中,首先要获得Json数组
    public static ArrayList<User> fromJson(JSONArray jsonObjects) {
        ArrayList<User> users = new ArrayList<User>();
        for (int i = 0; i < jsonObjects.length(); i++) {
            try {
                users.add(new User(jsonObjects.getJSONObject(i)));
            } catch (JSONException e) {
                e.printStackTrace();
            }

        }
        return users;
    }
}

优化ListView

public class UserAdapter extends ArrayAdapter<User> {
    //使用viewHolder缓存数据
    private static class ViewHolder {
        TextView name;
        TextView home;
    }
    @Override
    public View getView(int position , View convertView, ViewGroup parent) {
    //获得相应位置的类
        User user = getItem(position);
        ViewHolder viewHolder;
        if (convertView == null) {
            viewHolder = new ViewHolder();
            convertView = LayoutInflater.from(getContext()).inflate(R.layout.item_user, parent, false);
            //加载两个textView视图
            viewHolder.name = (TextView) convertView.findViewById(R.id.tvName);
            viewHolder.home = (TextView) convertView.findViewById(R.id.tvHome);
            //将viewHolder存贮在convertView中
            convertView.setTag(viewHolder);
        } else {
        //将convertView中存储的数据还原成viewHolder
            viewHolder = (viewHolder) convertView.getTag();
        }
        viewHolder.name.setText(user.name);
        viewHolder.home.setText(user.hometown);
        return convertView;
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值