MainActivity
-----------------------------------------------------------------------------------------------------------------------------------
package com.example.myapplication; import android.os.Bundle; import android.support.v4.widget.DrawerLayout; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.LinearLayout; import android.widget.ListView; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity { private DrawerLayout drawerLayout; private LinearLayout menu; private List<String> datas; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); drawerLayout = (DrawerLayout) findViewById(R.id.drawer); menu = (LinearLayout) findViewById(R.id.menu); ListView lv=(ListView) findViewById(R.id.lv); datas = new ArrayList<String>(); datas.add("新闻"); datas.add("关注"); datas.add("动态"); datas.add("设置"); ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, datas); lv.setAdapter(adapter); lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { private F1 f1; @Override public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { drawerLayout.closeDrawer(menu); Bundle bundle=new Bundle(); bundle.putString("key",datas.get(i)); bundle.putInt("page",i+1); f1 = new F1(); f1.setArguments(bundle); getSupportFragmentManager().beginTransaction().replace(R.id.frcontent,f1).commit(); } }); } }
F1
_________________________________________________________________________________
package com.example.myapplication; import android.os.AsyncTask; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import com.example.myapplication.view.XListView; import com.google.gson.Gson; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; /** * Created by dyz on 2017/11/11/0011. */ public class F1 extends Fragment { private XListView xlv; private List<Bean.DataBean>list=new ArrayList<Bean.DataBean>(); int type=1; int page=1; private MyAdapter adapter; private Bundle bundle; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View v1 = inflater.inflate(R.layout.f1, container, false); xlv = (XListView) v1.findViewById(R.id.xlv); TextView textView=(TextView) v1.findViewById(R.id.textview); bundle = getArguments(); textView.setText(bundle.getString("key")); xlv.setPullRefreshEnable(true); xlv.setPullLoadEnable(true); xlv.setXListViewListener(new XListView.IXListViewListener() { @Override public void onRefresh() { page++; AsyncTask<Void,Void,String>asyncTask=new AsyncTask<Void, Void, String>() { @Override protected String doInBackground(Void... voids) { String path="http://api.expoon.com/AppNews/getNewsList/type/1/p/"+page+""; try { URL url=new URL(path); HttpURLConnection connection=(HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); connection.setConnectTimeout(10000); connection.setReadTimeout(10000); if(connection.getResponseCode()==200) { InputStream is = connection.getInputStream(); String json = streamToString(is, "utf-8"); return json; } } catch (Exception e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(String s) { Log.d("LOG","++++++++++++"+s); Gson gson=new Gson(); Bean bean = gson.fromJson(s, Bean.class); list.clear(); list.addAll(0,bean.getData()); setAdapter(); xlv.stopRefresh(); Date date=new Date(System.currentTimeMillis()); SimpleDateFormat simpleDateFormat=new SimpleDateFormat("HH:mm"); xlv.setRefreshTime(simpleDateFormat.format(date)); } }; asyncTask.execute(); } @Override public void onLoadMore() { getDataFromNet(); } }); getDataFromNet(); return v1; } private void getDataFromNet(){ AsyncTask<Void,Void,String>asyncTask=new AsyncTask<Void, Void, String>() { @Override protected String doInBackground(Void... voids) { String path="http://api.expoon.com/AppNews/getNewsList/type/1/p/"+bundle.getInt("page")+""; try { URL url=new URL(path); HttpURLConnection connection=(HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); connection.setConnectTimeout(10000); connection.setReadTimeout(10000); if(connection.getResponseCode()==200) { InputStream is = connection.getInputStream(); String json = streamToString(is, "utf-8"); return json; } } catch (Exception e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(String s) { Gson gson=new Gson(); Bean bean = gson.fromJson(s, Bean.class); list.addAll(bean.getData()); setAdapter(); xlv.stopLoadMore(); } }; asyncTask.execute(); } private void setAdapter(){ if(adapter==null){ adapter = new MyAdapter(list,getActivity()); xlv.setAdapter(adapter); } else{ adapter.notifyDataSetChanged(); } } private String streamToString(InputStream inputStream,String charset) { try { InputStreamReader inputStreamReader = new InputStreamReader(inputStream,charset); BufferedReader bufferedReader = new BufferedReader(inputStreamReader); String s = null; StringBuilder builder = new StringBuilder(); while ((s = bufferedReader.readLine()) != null){ builder.append(s); } bufferedReader.close(); return builder.toString(); } catch (Exception e) { e.printStackTrace(); } return null; } }
activity_main.xml
_____________________________________________________________________________________________
<?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.myapplication.MainActivity" android:id="@+id/drawer" > <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" > <FrameLayout android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/frcontent" ></FrameLayout> </LinearLayout> <LinearLayout android:layout_width="240dp" android:layout_height="match_parent" android:orientation="vertical" android:layout_gravity="start" android:background="#ccc" android:id="@+id/menu" > <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/img" android:src="@mipmap/ic_launcher" /> <ListView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/lv" ></ListView> </LinearLayout> </android.support.v4.widget.DrawerLayout>
MyAdapter
_____________________________________________________________________________________
package com.example.myapplication; import android.content.Context; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.TextView; import java.util.ArrayList; import java.util.List; /** * Created by dyz on 2017/11/11/0011. */ public class MyAdapter extends BaseAdapter { private List<Bean.DataBean> list=new ArrayList<Bean.DataBean>(); Context context; public MyAdapter(List<Bean.DataBean> list, Context context) { this.list = list; this.context = context; } @Override public int getCount() { return list.size(); } @Override public Object getItem(int i) { return list.get(i); } @Override public long getItemId(int i) { return i; } @Override public View getView(int i, View view, ViewGroup viewGroup) { View v1 = View.inflate(context, R.layout.ff, null); TextView shang=(TextView) v1.findViewById(R.id.shang); shang.setText(list.get(i).getNews_title()); return v1; } }f1.xml___________________________________________________________________________<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/textview" /> <com.example.myapplication.view.XListView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/xlv"> </com.example.myapplication.view.XListView> </LinearLayout>