public class MainActivity extends AppCompatActivity implements XListView.IXListViewListener {
private XListView xlv ;
private MyAdapter myAdapter ;
private boolean flag ;
private List<Bean.DataBean> data ;
private boolean flaginfo ;
private Dao dao ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super .onCreate(savedInstanceState);
setContentView(R.layout.activity_main );
xlv = (XListView) findViewById(R.id.xlv );
xlv .setPullLoadEnable(true );
xlv .setXListViewListener(this );
dao = new Dao(this );
shujuku();
getinit();
//xlv的点击事件
xlv .setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
//实例化一个意图
Intent intent = new Intent(MainActivity.this , SecondActivity.class );
//传值
intent.putExtra("path" ,data .get(i-1 ).getShare_url());
startActivity(intent);
}
});
}
public void getinit(){
getData("地址" );
}
//第一次解析数据
public void getinfo1(String s){
//解析数据
Gson gson = new Gson();
Bean bean = gson.fromJson(s, Bean.class );
data = bean.getData();
//调用适配器
myAdapter = new MyAdapter(MainActivity.this , data );
xlv .setAdapter(myAdapter );
}
//第二次解析数据
public void getinfo2(String s){
//解析数据
Gson gson = new Gson();
Bean bean = gson.fromJson(s, Bean.class );
List<Bean.DataBean> list = bean.getData();
if (flag ==true ){
//上拉加载加载到头
data .addAll(0 ,list);
}else {
//在信息的尾部
data .addAll(list);
}
//刷新适配器
myAdapter .notifyDataSetChanged();
}
//从数据库取数据
public void shujuku(){
String s = dao .sele();
if (s != null ) {
//解析数据
Gson gson = new Gson();
Bean bean = gson.fromJson(s, Bean.class );
data = bean.getData();
//调用适配器
myAdapter = new MyAdapter(MainActivity.this , data );
xlv .setAdapter(myAdapter );
}
}
public void getData(String url){
new AsyncTask<String,Void,String>(){
@Override
protected void onPostExecute(String s) {
super .onPostExecute(s);
//数据库的判断
if (s!=null ){
dao .updateinfo(s);
}else {
dao .sele();
}
if (flaginfo ){
getinfo2(s);
}else {
//设置为true下次就不执行
flaginfo =true ;
getinfo1(s);
}
}
@Override
protected String doInBackground(String... strings) {
try {
URL url=new URL(strings[0 ]);
//创建HttpURLConnection对象
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
//请求的方式
connection.setRequestMethod("GET" );
connection.setConnectTimeout(5000 );
connection.setReadTimeout(5000 );
//请求码
Thread.sleep (5000 );
int code = connection.getResponseCode();
if (code==200 ){
InputStream is = connection.getInputStream();
String str = MyUtil.getStr (is);
System.out .println("================================" +str);
//返回字符串
dao .add(str);
return str;
}
} catch (Exception e) {
e.printStackTrace();
}
return null ;
}
}.execute(url);
}
//下拉刷新
@Override
public void onRefresh() {
flag =true ;
getinit();
xlv .stopRefresh(true );
}
//上拉加载更多
@Override
public void onLoadMore() {
flag =false ;
getinit();
xlv .stopLoadMore();
}