实现侧栏,为Xlistview获取网络数据

本文介绍了一个包含侧滑菜单功能的Android应用实例,通过DrawerLayout实现了侧边栏,并利用XListView实现了列表的下拉刷新和上拉加载更多功能。文章详细展示了如何使用自定义适配器来展示动态获取的数据,以及如何通过AsyncTask进行后台网络请求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package com.bwei.ssp.zk2_lx;

import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;

import com.bwei.ssp.mylibrary.Tools;
import com.bwei.ssp.mylibrary.View.XListView;
import com.google.gson.Gson;
import com.nostra13.universalimageloader.core.ImageLoader;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity implements XListView.IXListViewListener {

    private XListView xlv;
    private ListView lv;
    private List<String> list =new ArrayList<>();
    //定义一个离合为侧栏添加数据
    private String url ="http://www.yulin520.com/a2a/impressApi/news/mergeList?pageSize=10&page=";
    //网络数据地址 pag为动态设置
    private int page= 1;
    //默认页数为1
    private List<Bean.DataBean> data;
    private Madapter adapter;
    private ImageLoader instance;
    //框架接收网络图片并传递给Listview
    private DrawerLayout layout;
    //侧栏布局文件

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        layout = (DrawerLayout) findViewById(R.id.drawer);
        xlv = (XListView) findViewById(R.id.xlv);
        lv = (ListView) findViewById(R.id.lv);

        list.add("王庆的爷爷是宋社鹏");
        list.add("李志");
        list.add("王庆");
        list.add("宋社鹏");
        //模拟假数据

        ArrayAdapter<String> ad = new ArrayAdapter<>(MainActivity.this, android.R.layout.simple_expandable_list_item_1, list);
        //为ListView设置适配器并使用自带布局
        lv.setAdapter(ad);
        lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                layout.closeDrawer(lv);
                //设置点击事件当点击条目时关闭侧栏
            }
        });
        instance = ImageLoader.getInstance();

        xlv.setXListViewListener(this);
        //设置可以上拉加载更多;
        xlv.setPullLoadEnable(true);

        initData(1);
         //定义网络接收数据方法方法
    }

    private void initData(int page) {
        new MAsyzTask().execute(url+page);
        //为网络地址拼接页数
    }



    class MAsyzTask extends AsyncTask<String,Void,String>{


      @Override
      protected String doInBackground(String... strings) {
          return Tools.getJson(strings[0]);
      }

      @Override
      protected void onPostExecute(String s) {
          super.onPostExecute(s);
          Gson gson = new Gson();
          Bean bean = gson.fromJson(s, Bean.class);
         data = bean.getData();
          adapter= new Madapter();
          xlv.setAdapter(adapter);

      }

      @Override
      protected void onProgressUpdate(Void... values) {
          super.onProgressUpdate(values);
      }
  }

     class Madapter extends BaseAdapter{
         @Override
         public int getCount() {
             return data.size();
         }

         @Override
         public Object getItem(int i) {
             return data.get(i);
         }

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

         @Override
         public int getViewTypeCount() {
             return 2;
         }

         @Override
         public int getItemViewType(int position) {
             return position%2;
         }

         @Override
         public View getView(int i, View view, ViewGroup viewGroup) {
             int type = getItemViewType(i);
             switch (type){
                 case 0:
                  view = View.inflate(MainActivity.this, R.layout.x_item, null);
                       TextView tv =(TextView)view.findViewById(R.id.tv);
                        ImageView ig = (ImageView) view.findViewById(R.id.ig);
                        tv.setText(data.get(i).getTitle());
                     break;
                 case 1:
                     view = View.inflate(MainActivity.this, R.layout.x_item, null);
                     TextView tv1 =(TextView)view.findViewById(R.id.tv);
                     ImageView ig1 = (ImageView) view.findViewById(R.id.ig);
                     tv1.setText(data.get(i).getTitle());
                     instance.displayImage(data.get(i).getImg(),ig1);
                     break;
             }
             return view;
         }
     }
    @Override
    public void onRefresh() {
        list.clear();
        initData(1);//重新请求数据
        xListViewUIComplete();//完成ui

    }



    /**
     * 上拉加载
     */
    @Override
    public void onLoadMore() {
        initData(page++);
        xListViewUIComplete();//完成ui

    }

    private void xListViewUIComplete() {
        //让刷新头消失
        xlv.stopRefresh();
        //让加载更多文字消失
        xlv.stopLoadMore();
        //设置刷新时间为"刚刚"
        xlv.setRefreshTime("刚刚");

    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值