一,
package com.bwei.text2_lianxi1; import android.app.Activity; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; import android.support.v4.widget.DrawerLayout; import android.widget.FrameLayout; import android.widget.ListView; import android.widget.RadioGroup; import java.util.ArrayList; import java.util.List; public class MainActivity extends FragmentActivity implements RadioGroup.OnCheckedChangeListener{ private RadioGroup radioGroup; private FrameLayout frameLayout; private Fragment01_shehui fragment01_shehui; private Fragment02_guonei fragment02_guonei; private Fragment03_yule fragment03_yule; private ListView listview; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //初始化视图 initview(); //获取网络数据 initData(); } private void initData() { fragment01_shehui=new Fragment01_shehui(); fragment02_guonei=new Fragment02_guonei(); fragment03_yule=new Fragment03_yule(); //开启事物 FragmentManager supportFragmentManager = getSupportFragmentManager(); FragmentTransaction transaction = supportFragmentManager.beginTransaction(); transaction.replace(R.id.framelayout,fragment01_shehui); transaction.commit(); } private void initview() { frameLayout=findViewById(R.id.framelayout); radioGroup=findViewById(R.id.radiogroup); radioGroup.setOnCheckedChangeListener(this); } @Override public void onCheckedChanged(RadioGroup group, int checkedId) { switch (checkedId){ case R.id.button_shehui: //开启一个事爱情也是务 FragmentManager supportFragmentManager = getSupportFragmentManager(); //开启 FragmentTransaction transaction = supportFragmentManager.beginTransaction(); //replace 替换 布局 // 第一个参数 是你的布局文件的id 第二个就是fragment transaction.replace(R.id.framelayout,fragment01_shehui); //提交 transaction.commit(); break; case R.id.button_guonei: FragmentManager supportFragmentManager1 = getSupportFragmentManager(); FragmentTransaction transaction1 = supportFragmentManager1.beginTransaction(); transaction1.replace(R.id.framelayout,fragment02_guonei); transaction1.commit(); break; case R.id.button_yule: FragmentManager supportFragmentManager2 = getSupportFragmentManager(); FragmentTransaction transaction2 = supportFragmentManager2.beginTransaction(); transaction2.replace(R.id.framelayout,fragment03_yule); transaction2.commit(); break; } } }
二,
package com.bwei.text2_lianxi1; import android.os.Bundle; import android.support.annotation.NonNull; 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 com.bwei.text2_lianxi1.view.XListView; import com.google.gson.Gson; import java.util.ArrayList; import java.util.List; /** * 多条目加载 * 1.初始化界面 */ public class Fragment01_shehui extends Fragment implements XListView.IXListViewListener{ /** * 1.获取组件 * 2.HttpUtils 工具类 * 3. Url 地址 如果里面 有汉字的话 还要改成UTF-8格式 * httpUtils.get(url); * * 接口回调 得到json数据 处理它。。。。 适配器(BaseAdapter) * XListView 的下拉刷新 上拉加载 * * * * */ private static final String TAG = "Fragment01_shehui=="; private String shehui_url="http://api.tianapi.com/social/"; private XListView xlistview; private int page=10; private List<SheHuiBean.NewslistBean> shehuilist=new ArrayList<>(); private SheHui_MyBase base; @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment01_shehui, container,false); xlistview =view.findViewById(R.id.shehui_listview); // 这俩个true 是能让你上拉和加载 //如果没有这俩个 就无法完成 XListView xlistview.setPullLoadEnable(true); xlistview.setPullRefreshEnable(true); //你上面是实现了一个接口 所以这里要引用 this的意思是getActivity(); MainActivity.this xlistview.setXListViewListener(this); //设置适配器 base = new SheHui_MyBase(getActivity(),shehuilist); xlistview.setAdapter(base); //返回视图 return view; } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); //请求网络 getDataFromNet(); } private void getDataFromNet() { //这是调用UHttptils 工具类 HttpUtils instance = HttpUtils.getInstance(); //调用 工具类中的方法 get instance.get(shehui_url+"?key=48a7d7193e11bd2dd4a683b6e2f90a4f&num="+page); //接口回调 实际上就是为了 接受json数据 才使用接口回调 instance.setHttpUtilsListener(new HttpUtils.HttpUtilListener() { @Override public void getSuccess(String json) { Log.d(TAG, "成功: "+json); //gson Gson gson=new Gson(); SheHuiBean sheHuiBean = gson.fromJson(json, SheHuiBean.class); List<SheHuiBean.NewslistBean> newslist = sheHuiBean.getNewslist(); //这个判断是判断 页数 而不是判断数量 shehuilist.clear(); shehuilist.addAll(newslist); //刷新数据 base.notifyDataSetChanged(); if(page==10){ xlistview.stopRefresh(); }else{ xlistview.stopLoadMore(); } } @Override public void getError(String error) { Log.d(TAG, "失败: "+error); } }); } @Override public void onRefresh() { page=10; getDataFromNet(); } @Override public void onLoadMore() { page+=10; getDataFromNet(); } }
三,
package com.bwei.text2_lianxi1; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import com.bwei.text2_lianxi1.view.XListView; import com.google.gson.Gson; import java.util.ArrayList; import java.util.List; public class Fragment02_guonei extends Fragment implements XListView.IXListViewListener{ private String guonei_url="http://api.tianapi.com/guonei/"; private int page=10; private XListView xlistview; private List<GuoNei_Bean.NewslistBean> GuoNeilist=new ArrayList<>(); private GuoNei_MyBase base; @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment02_guonei, container,false); xlistview=view.findViewById(R.id.guonei_listview); xlistview.setPullRefreshEnable(true); xlistview.setPullLoadEnable(true); xlistview.setXListViewListener(this); base=new GuoNei_MyBase(getActivity(),GuoNeilist); xlistview.setAdapter(base); return view; } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); } @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); //请求网络 getDataFromNet(); } private void getDataFromNet() { //调用HttpUtils 工具类 HttpUtils instance = HttpUtils.getInstance(); //调用工具类中get 方法 instance.get(guonei_url+"?key=48a7d7193e11bd2dd4a683b6e2f90a4f&num="+page); //接口回调 instance.setHttpUtilsListener(new HttpUtils.HttpUtilListener() { @Override //成功 public void getSuccess(String json) { Gson gson=new Gson(); GuoNei_Bean guoNei_bean = gson.fromJson(json, GuoNei_Bean.class); List<GuoNei_Bean.NewslistBean> newslist = guoNei_bean.getNewslist(); GuoNeilist.clear(); GuoNeilist.addAll(newslist); base.notifyDataSetChanged(); if(page==10){ xlistview.stopRefresh(); }else{ xlistview.stopLoadMore(); } } //失败 @Override public void getError(String error) { } }); } @Override public void onRefresh() { page=10; getDataFromNet(); } @Override public void onLoadMore() { page+=10; getDataFromNet(); } }
四,社会_mybase
package com.bwei.text2_lianxi1; 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.nostra13.universalimageloader.core.ImageLoader; import java.util.List; public class SheHui_MyBase extends BaseAdapter { private Context context; private List<SheHuiBean.NewslistBean> list; public SheHui_MyBase(Context context, List<SheHuiBean.NewslistBean> list) { this.context = context; this.list = list; } @Override public int getCount() { return list.size(); } @Override public Object getItem(int position) { return position; } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { //获取条目的类型 int type = getItemViewType(position); switch (type){ case 0: LeftViewHolder leftViewHolder; if(convertView==null){ convertView=View.inflate(context,R.layout.item_left,null); leftViewHolder=new LeftViewHolder(); leftViewHolder.imageView_left=convertView.findViewById(R.id.item_left); leftViewHolder.textView_left=convertView.findViewById(R.id.item_left_textview); convertView.setTag(leftViewHolder); }else{ leftViewHolder= (LeftViewHolder) convertView.getTag(); } //赋值 String picUrl = list.get(position).getPicUrl(); ImageLoader.getInstance().displayImage(picUrl,leftViewHolder.imageView_left,MyApp.getOptions()); leftViewHolder.textView_left.setText(list.get(position).getTitle()); break; case 1: RightViewHolder rightViewHolder; if(convertView==null){ convertView=View.inflate(context,R.layout.item_right,null); rightViewHolder=new RightViewHolder(); rightViewHolder.imageView_right=convertView.findViewById(R.id.item_right); rightViewHolder.textView_right=convertView.findViewById(R.id.item_right_textview); convertView.setTag(rightViewHolder); }else{ rightViewHolder= (RightViewHolder) convertView.getTag(); } //赋值 String picUrl2 = list.get(position).getPicUrl(); ImageLoader.getInstance().displayImage(picUrl2,rightViewHolder.imageView_right,MyApp.getOptions()); rightViewHolder.textView_right.setText(list.get(position).getTitle()); break; } return convertView; } @Override public int getViewTypeCount() { return 2; } @Override public int getItemViewType(int position) { //如果是基数 int type=position%2; return type; } class LeftViewHolder{ ImageView imageView_left; TextView textView_left; } class RightViewHolder{ ImageView imageView_right; TextView textView_right; } }
五。httputils
package com.bwei.text2_lianxi1; import android.os.Handler; import android.os.Message; import android.util.Log; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; public class HttpUtils { private MyHandler myHandler=new MyHandler(); //单例模式 private static HttpUtils httpUtils=new HttpUtils(); private HttpUtilListener httpUtilsListener; //构造方法私有化 private HttpUtils(){ } public static HttpUtils getInstance(){ if(httpUtils==null){ httpUtils=new HttpUtils(); } return httpUtils; } private static final String TAG="HttpUtils======"; //封装get public void get(final String url){ new Thread(){ @Override public void run() { try { URL u=new URL(url); HttpURLConnection connection= (HttpURLConnection) u.openConnection(); connection.setConnectTimeout(3000); int code = connection.getResponseCode(); if(code==200){ InputStream inputStream = connection.getInputStream(); String json = input(inputStream); Log.d(TAG, "run: "+json); //发送message Message message = myHandler.obtainMessage(); message.what=0; message.obj=json; myHandler.sendMessage(message); } } catch (Exception e) { e.printStackTrace(); } } }.start(); } //将流转成字符串 public String input(InputStream inputStream) throws IOException { int len=0; byte[] byt=new byte[1024]; StringBuffer stringBuffer=new StringBuffer(); while ((len=inputStream.read(byt))!=-1){ String s=new String(byt,0,len); stringBuffer.append(s); } return stringBuffer.toString(); } //打开handler class MyHandler extends Handler { @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what){ //成功 case 0: String json= (String) msg.obj; httpUtilsListener.getSuccess(json); break; //失败 case 1: String error= (String) msg.obj; httpUtilsListener.getError(error); break; } } } //定义接口 public interface HttpUtilListener{ void getSuccess(String json); void getError(String error); } //外部访问的方法 public void setHttpUtilsListener(HttpUtilListener httpUtilsListener){ this.httpUtilsListener=httpUtilsListener; } }