//主方法
package com.example.admin.lujingyi1501c20171026;
import android.os.AsyncTask;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import com.google.gson.Gson;
import com.handmark.pulltorefresh.library.PullToRefreshBase;
import com.handmark.pulltorefresh.library.PullToRefreshListView;
import java.util.ArrayList;
import java.util.List;
import Bean.Superclass;
import Tools.Myadapter;
import Tools.Netutiils;
public class MainActivity extends AppCompatActivity {
DrawerLayout dw;
ListView lv;
List<String> list;
PullToRefreshListView pull;
String jsonurl="http://www.93.gov.cn/93app/data.do?channelId=0&startNum=";
int count=0;
List<Superclass.DataBean> data;
Myadapter myadapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dw= (DrawerLayout) findViewById(R.id.dw);
lv= (ListView) findViewById(R.id.lv);
pull= (PullToRefreshListView) findViewById(R.id.pull);
pull.setMode(PullToRefreshBase.Mode.BOTH);
cehua();
//上拉刷新下拉加载监听
pull.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
@Override
public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
//刷新
init();
}
//加载拼接端口号
@Override
public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
//异步
new AsyncTask<String, String, String>() {
@Override
protected String doInBackground(String... params) {
Netutiils netutiils=new Netutiils();
//拼接端口号
count=count+20;
String getstring = netutiils.getstring(jsonurl+count);
return getstring;
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
Gson gson=new Gson();
Superclass superclass = gson.fromJson(s, Superclass.class);
List<Superclass.DataBean> data2 = superclass.getData();
//原来数据集合添加新集合并刷新适配器 然后结束刷新
data.addAll(data2);
myadapter.notifyDataSetChanged();
pull.onRefreshComplete();
}
}.execute();
}
});
init();
}
//pull给添加数据
private void init() {
//异步加载
new AsyncTask<String, String, String>() {
@Override
protected String doInBackground(String... params) {
//调用工具类
Netutiils netutiils=new Netutiils();
//获得原始数据并返回
String getstring = netutiils.getstring(jsonurl+count);
return getstring;
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
//解析返回的数据并付值
Gson gson=new Gson();
Superclass superclass = gson.fromJson(s, Superclass.class);
//调用工具类
data = superclass.getData();
myadapter = new Myadapter(MainActivity.this,data);
pull.setAdapter(myadapter);
pull.onRefreshComplete();
}
}.execute();
}
private void cehua() {
//侧滑页面内容
list=new ArrayList<String>();
list.add("我的消息");
list.add("教学视频");
list.add("我的成绩");
list.add("学车日记");
list.add("文章收藏");
list.add("足迹中心");
list.add("教员中心");
list.add("设置");
//侧滑中的listview适配器
lv.setAdapter(new BaseAdapter() {
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
//优化
@Override
public View getView(int position, View convertView, ViewGroup parent) {
viewholde vh;
if(convertView==null){
convertView=View.inflate(MainActivity.this,R.layout.list,null);
vh=new viewholde();
vh.tv=(TextView) convertView.findViewById(R.id.tv);
convertView.setTag(vh);
}else{
vh= (viewholde) convertView.getTag();
}
vh.tv.setText(list.get(position).toString());
return convertView;
}
class viewholde{
TextView tv;
}
});
//侧滑监听
dw.setDrawerListener(new DrawerLayout.DrawerListener() {
@Override
public void onDrawerSlide(View drawerView, float slideOffset) {
}
//完全打开吐司
@Override
public void onDrawerOpened(View drawerView) {
Toast.makeText(MainActivity.this,"打开了",Toast.LENGTH_SHORT).show();
Log.i("TAG","打开");
}
//完全关闭吐司
@Override
public void onDrawerClosed(View drawerView) {
Toast.makeText(MainActivity.this,"关闭",Toast.LENGTH_SHORT).show();
Log.i("TAG","关闭");
}
@Override
public void onDrawerStateChanged(int newState) {
}
});
}
}
//imageloader
package Tools;
import android.app.Application;
import android.graphics.Bitmap;
import android.os.Environment;
import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiskCache;
import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import java.io.File;
/**
* Created by admin on 2017/10/26.
*/
public class Imageloade extends Application {
@Override
public void onCreate() {
super.onCreate();
File cacheFile= new File(Environment.getExternalStorageDirectory()+"/"+"imgages");
ImageLoaderConfiguration imageLoaderConfiguration = new ImageLoaderConfiguration.Builder(this)
.threadPoolSize(2)//线程池的数量
.threadPriority(4)
.memoryCacheSize(2*1024*1024)//设置内存缓存区大小
.diskCacheSize(20*1024*1024)//设置sd卡缓存区大小
.diskCache(new UnlimitedDiskCache(cacheFile))//自定义缓存目录
.writeDebugLogs()//打印日志内容
.diskCacheFileNameGenerator(new Md5FileNameGenerator())//给缓存的文件名进行md5加密处理
.memoryCacheExtraOptions(200,200)
.build();
ImageLoader.getInstance().init(imageLoaderConfiguration);
}
public static DisplayImageOptions getImageOptions(){
DisplayImageOptions optionsoptions=new DisplayImageOptions.Builder()
.cacheInMemory(true)//使用内存缓存
.cacheOnDisk(true)//使用磁盘缓存
.bitmapConfig(Bitmap.Config.RGB_565)//设置图片格式
.build();
return optionsoptions;
}
}
//package Tools;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.example.admin.lujingyi1501c20171026.R;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import java.util.List;
import Bean.Superclass;
/**
* Created by admin on 2017/10/26.
*/
public class Myadapter extends BaseAdapter {
Context context;
List<Superclass.DataBean> data;
public Myadapter(Context context, List<Superclass.DataBean> data) {
this.context = context;
this.data = data;
}
@Override
public int getCount() {
return data.size();
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public int getViewTypeCount() {
return 2;
}
@Override
public int getItemViewType(int position) {
int a=0;
if(data.get(position).getIMAGEURL()!=null){
a=0;
}else{
a=1;
}
return a;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
//根据返回的值来判断条目
int type = getItemViewType(position);
switch (type){
case 0:
viewhodler1 vh1;
if(convertView==null){
convertView=View.inflate(context, R.layout.list1,null);
vh1=new viewhodler1();
vh1.tv1=(TextView) convertView.findViewById(R.id.tv1);
convertView.setTag(vh1);
}else{
vh1= (viewhodler1) convertView.getTag();
}
vh1.tv1.setText(data.get(position).getTITLE().toString()+""+data.get(position).getSUBTITLE().toString());
break;
case 1:
viewholder2 vh2;
if(convertView==null){
convertView=View.inflate(context, R.layout.list2,null);
vh2=new viewholder2();
vh2.tv2=(TextView) convertView.findViewById(R.id.tv2);
vh2.iv=(ImageView)convertView.findViewById(R.id.iv);
convertView.setTag(vh2);
}else{
vh2= (viewholder2) convertView.getTag();
}
ImageLoader.getInstance().displayImage(data.get(position).getIMAGEURL(),vh2.iv,Imageloade.getImageOptions());
vh2.tv2.setText(data.get(position).getTITLE()+""+data.get(position).getSUBTITLE());
break;
}
return convertView;
}
class viewhodler1{
TextView tv1;
}
class viewholder2{
TextView tv2;
ImageView iv;
}
}
//网络状态
package Tools;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.provider.Settings;
import android.support.v7.app.AlertDialog;
/**
* Created by admin on 2017/10/26.
*/
public class Net {
public static boolean isWL(Context context) {
ConnectivityManager manager = (ConnectivityManager)
context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo info = manager.getActiveNetworkInfo();
return (info != null && info.isAvailable());
}
public static void TanKuang(final Context context) {
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setMessage("网络链接中断,是否设置链接网络");
builder.setNegativeButton("取消", null);
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// 两种跳转都可以跳转到到设置网络
// Intent intent = new Intent(Settings.ACTION_WIRELESS_SETTINGS);
Intent intent = new Intent(Settings.ACTION_WIFI_SETTINGS);
// intent.setAction("android.settings.WIRELESS_SETTINGS");
context.startActivity(intent);
}
});
builder.create().show();
}
}
//package Tools;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
/**
* Created by admin on 2017/10/26.
*/
public class Netutiils {
//网络工具类
public String getstring(String jsonurl){
String str="";
try {
//创建一个url
URL url=new URL(jsonurl);
//网络请求
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
//最大连接读取时间
httpURLConnection.setConnectTimeout(5000);
httpURLConnection.setReadTimeout(5000);
//获得结果码并判断是否等于200
int responseCode = httpURLConnection.getResponseCode();
if(responseCode==200){
InputStream inputStream = httpURLConnection.getInputStream();
byte[] b=new byte[1024];
int length=0;
while ((length=inputStream.read(b))!=-1){
str+=new String(b,0,length);
}
}
} catch (Exception e) {
e.printStackTrace();
}
return str;
}
}