xListView(联网判断)

来源:互联网 发布:唯品会秒杀软件 编辑:程序博客网 时间:2024/06/01 19:04
1.MainActiv类
 

public class MainActivity extends AppCompatActivity implementsXListView.IXListViewListener {

    private XListViewxLv;
    private MyBaseAdapteradapter;
   //定义一个页码变量记录用户刷新到第几页了
    private int pageIndex =1;
   //定义一个变量去记录用户操作行为(例如:上拉、下拉)
    private booleanflag;

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


       xLv = (XListView) findViewById(R.id.xLv);
       //设置是否可以上下拉加载
       xLv.setPullLoadEnable(true);
       xLv.setXListViewListener(this);

       if(isOnline()) {
          //有网,联网请求数据
          getData();
       }else{
          //弹出提示对话框
          showDialog();
       }

    }

   
    private voidshowDialog(){

       AlertDialog.Builder builder = newAlertDialog.Builder(this);
       builder.setMessage("怎么可没网呢");
       builder.setNegativeButton("不联网,",null);
       builder.setPositiveButton("联网", newDialogInterface.OnClickListener() {
          @Override
           publicvoid onClick(DialogInterface dialog, int which) {

              //跳转网络设置界面
              startActivity(newIntent(Settings.ACTION_WIRELESS_SETTINGS));

           }
       });
       builder.create().show();



    }


   
    public booleanisOnline() {

       //得到一个连接管理者
       ConnectivityManager connMgr =(ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
       //得到联网信息
       NetworkInfo networkInfo =connMgr.getActiveNetworkInfo();
       //判断设备是否联网
       return (networkInfo != null &&networkInfo.isConnected());
    }


   
    private voidgetData(){

       try {
          getNetWorkData("http://apis.juhe.cn/cook/query.php?menu="+URLEncoder.encode("西红柿","utf-8")+"&key=12345&pn="+pageIndex+"&rn=10");
       } catch (Exception e) {
          e.printStackTrace();
       }

    }
   
    private voidgetNetWorkData(String url){


       new AsyncTask(){


          @Override
           protectedvoid onPostExecute(String s) {
              super.onPostExecute(s);


              if(s == null){
                 return;
              }


              Gson gson = new Gson();
              MenuInfo menuInfo =gson.fromJson(s,MenuInfo.class);

              List dataBeanList =menuInfo.getResult().getData();

              if(adapter == null) {
                 //将数据绑定到适配上
                 adapter = new MyBaseAdapter(MainActivity.this,dataBeanList);
                 //将适配器上的数据映射到ListView
                 xLv.setAdapter(adapter);
              }else{
                 adapter.loadMore(dataBeanList,flag);
              }
           }

          @Override
           protectedString doInBackground(String... params) {


              try {
                 URL url = new URL(params[0]);
                 HttpURLConnection connection =(HttpURLConnection) url.openConnection();
                 connection.setRequestMethod("GET");
                 connection.setConnectTimeout(5000);
                 connection.setReadTimeout(5000);

                 int code = connection.getResponseCode();

                 if(code == 200){
                    InputStream is = connection.getInputStream();
                     returnStreamTools.readFromNetWork(is);
                 }
              } catch (Exception e) {
                 e.printStackTrace();
              }
              return null;
           }
       }.execute(url);


    }


   
    @Override
    public void onRefresh(){
       
       flag = true;
       ++pageIndex;
       getData();
       //停止下拉刷新
       xLv.stopRefresh(true);

    }

   
    @Override
    public void onLoadMore(){

       Log.d("MainActivity", "上拉加载更多数据");
       flag = false;
       ++pageIndex;
       getData();
       //停止加载更多
       xLv.stopLoadMore();

    }
}
2.Application类
public class MyApplication extends Application {


    @Override
    public void onCreate(){
       super.onCreate();

       String path =Environment.getExternalStorageDirectory()+"1507DAccess";

       File cacheDir = new File(path);

       ImageLoaderConfiguration config = newImageLoaderConfiguration.Builder(this)
              .threadPriority(100)
              .threadPoolSize(3)
             .memoryCacheExtraOptions(200,200)
              .memoryCacheSize(2 * 1024 *1024)
              .diskCache(newUnlimitedDiskCache(cacheDir))
             .diskCacheFileNameGenerator(new Md5FileNameGenerator())
              .diskCacheSize(50 * 1024 *1024)
              .build();
       ImageLoader.getInstance().init(config);

    }



    public staticDisplayImageOptions getOptons(){


       DisplayImageOptions options = newDisplayImageOptions.Builder()
              .cacheInMemory(true)
              .cacheOnDisk(true)
             .showImageForEmptyUri(R.mipmap.ic_empty)
             .showImageOnFail(R.mipmap.ic_error)
             .showImageOnLoading(R.mipmap.loading)
              .build();

       return options;


    }

}
3.适配器类
public class MyBaseAdapter extends BaseAdapter {


    private Contextcontext;
    private ListdataBeanList;

    publicMyBaseAdapter(Context context,List dataBeanList){
       this.context=context;
       this.dataBeanList = dataBeanList;
    }

   
    public voidloadMore(List datas,boolean flag){


       for (MenuInfo.ResultBean.DataBean dataBean :datas) {
           //flag =true 代表下拉  false 上拉
          if(flag){
             dataBeanList.add(0,dataBean);
           }else{
             //将更多的数据添加到原来与适配器绑定的集合中去
             dataBeanList.add(dataBean);
           }

       }
       //刷新界面
       notifyDataSetChanged();


    }


    @Override
    public int getCount(){
       return dataBeanList != null?dataBeanList.size(): 0;
    }

    @Override
    public ObjectgetItem(int position) {
       return dataBeanList.get(position);
    }

    @Override
    public longgetItemId(int position) {
       return position;
    }

    @Override
    public View getView(intposition, View convertView, ViewGroup parent) {



       //填充布局
       if(convertView == null){
          convertView =convertView.inflate(context,R.layout.item,null);
       }

       ImageView ivIcon = (ImageView)convertView.findViewById(R.id.ivIcon);
       TextView tvContent = (TextView)convertView.findViewById(R.id.tvContent);

       //设置文本信息
      tvContent.setText(dataBeanList.get(position).getTitle());
       //加载图片
      ImageLoader.getInstance().displayImage(dataBeanList.get(position).getAlbums().get(0),ivIcon,MyApplication.getOptons());

       return convertView;
    }
}
4.工具类
5.Json串类

6.访问网络、读取内存权限

 

    xListView(联网判断)


    
   

 

 

原创粉丝点击