ListView+JSON

本文介绍如何在Android应用中结合ListView和JSON技术,展示从服务器获取的数据。通过解析JSON对象,将数据填充到ListView的各个项中,实现动态数据加载和展示。
摘要由CSDN通过智能技术生成
/*
异步访问网络,解析请求的json数据,加载数据到ListView。
三大块东西:异步请求,JSON解析,自定义适配器
convertView  把从XML文件读出来的信息装到一个view里,当这个convertView不存在时,即第一次使用它
             ,我们就创建一个item布局的View对象并赋给convertView,以后使用convertView时
             ,只需从convertView中getTag取出来就可以,不需要再次创建item的布局对象了,这样便提高了性能。
 */
public class RequestDataActivity extends AppCompatActivity {
    private ListView mListView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mListView = (ListView) findViewById(R.id.list_view_demo);
        //获取环境,服务支持
        LayoutInflater layoutInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        //加载指定布局资源
        View view = layoutInflater.inflate(R.layout.header_list_demo, null);
        //添加页脚视图。将获取的布局资源添加到ListView的指定位置
        mListView.addFooterView(view);
        //开启异步:request请求数据->JSON解析数据->开启setAdapter,传参数到已经准备好的适配器,进行一系列操作后实现setAdapter
        new AppAsyncTask().execute();
    }

    //定义适配器内部类,处理数据和列表的连接
    public class AppListAdapter extends BaseAdapter {

        private Context mContext;
        private List<LessonInfo> mInfos;//课程信息  自定义类

        public AppListAdapter(Context context, List<LessonInfo> infos) {
            mContext = context;
            mInfos = infos;
        }

        @Override
        public int getCount() {
            return mInfos.size();
        }

        @Override
        public Object getItem(int position) {
            return mInfos.get(position);
        }

        @Override
        public long getItemId(int position) {
            return position;
        }

        //ListView 针对List中每个item,要求 adapter “给我一个视图” (getView),一个新的视图被返回并显示
        @Override
        public View getView(final int position, View convertView, ViewGroup parent) {
            //循环利用itemview
            ViewHolder viewHolder;
            //布局资源获取服务,用于加载布局资源
            LayoutInflater layoutInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            //如果空,用convertView把控件信息给到这个item,即用viewHolder去调用循环器做到循环利用itemview。
            //通过convertview的setTag方法和getTag方法来将我们要显示的数据来绑定在convertview上。
            //  如果convertview 是第一次展示我们就创建新的Holder对象与之绑定
            //                  ,并在最后通过return convertview 返回,去显示;
            //  如果convertview 是回收来的那么我们就不必创建新的
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值