Text2

一,

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;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值