多条目视图+上拉刷新上+下拉加载

主页面

public class MainActivity extends FragmentActivity {

    private ViewPager pager;
    private RadioGroup group;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate (savedInstanceState);
        setContentView (R.layout.activity_main);

        pager = (ViewPager)findViewById (R.id.pager);
        group = findViewById (R.id.group);

        group.check (group.getChildAt (0).getId ());
        findViewById( R.id.button1).setBackgroundColor(Color.RED);
        findViewById( R.id.button2).setBackgroundColor(Color.GREEN);
        ArrayList<Fragment> list = new ArrayList<Fragment> ();
        FragListview fragListview=new FragListview ();
        FragGridview fragGridview=new FragGridview ();
        list.add (fragListview);
        list.add (fragGridview);

        pager.setAdapter (new MyFragmentAdapter (getSupportFragmentManager(),list));

        pager.addOnPageChangeListener (new ViewPager.OnPageChangeListener () {
            @Override
            public void onPageScrolled(int i, float v, int i1) {

            }

            @Override
            public void onPageSelected(int i) {
                group.check (group.getChildAt (i).getId ());
            }

            @Override
            public void onPageScrollStateChanged(int i) {

            }
        });
        group.setOnCheckedChangeListener (new RadioGroup.OnCheckedChangeListener () {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                switch (checkedId){
                    case R.id.button1:
                        findViewById( R.id.button1).setBackgroundColor(Color.RED);
                        findViewById( R.id.button2).setBackgroundColor(Color.GREEN);
                        pager.setCurrentItem (0);
                        break;
                    case R.id.button2:
                        findViewById( R.id.button1).setBackgroundColor(Color.GREEN);
                        findViewById( R.id.button2).setBackgroundColor(Color.RED);
                        pager.setCurrentItem (1);
                        break;
                }
            }
        });
    }
}

List展示页面

public class FragListview extends Fragment {

    private String str="http://www.xieast.com/api/news/news.php?page=1";
    private List<JsonBean.DataBean> daat;
    private XListView xlist;
    private MyListAdapter adapter;

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate (R.layout.listviewgson, container, false);

        xlist = view.findViewById (R.id.xlist);
        xlist.setPullLoadEnable (true);

        xlist.setXListViewListener (new XListView.IXListViewListener () {
            @Override
            public void onRefresh() {
               HttpUtile.httpAsynTask (str, new HttpUtile.CallBackString () {

                   @Override
                   public void getData(String s) {
                       Gson gson = new Gson();
                       JsonBean bean = gson.fromJson(s, JsonBean.class);
                       daat = bean.getData ();
                       adapter = new MyListAdapter (daat, getActivity ());
                       xlist.setAdapter(adapter);
                       onLoad();
                   }
               });
            }

            @Override
            public void onLoadMore() {
                HttpUtile.httpAsynTask(str, new HttpUtile.CallBackString() {
                    @Override
                    public void getData(String s) {
                        Gson gson = new Gson();
                        JsonBean bean = gson.fromJson(s, JsonBean.class);
                        List<JsonBean.DataBean> list = bean.getData();
                        //把数据放进集合中
                        daat.addAll(list);
                        //刷新数据
                        adapter.notifyDataSetChanged ();
                        onLoad();
                    }
                });
            }
        });
        HttpUtile.httpAsynTask (str, new HttpUtile.CallBackString() {
            @Override
            public void getData(String s) {
                Gson gson = new Gson();
                JsonBean bean = gson.fromJson(s, JsonBean.class);
                daat = bean.getData();
                //第七部适配器
                adapter = new MyListAdapter (daat, getActivity ());
                // 第八步 设置适配器
                xlist.setAdapter(adapter);

            }
        });
        return view;
    }
    private void onLoad() {
     //停止加载更多,重置头视图
        xlist .stopRefresh();
    //停止加载更多,重置脚视图
        xlist.stopLoadMore();
    //设置刷新时间
        xlist.setRefreshTime("刚刚刷新了");
}

}

GridView展示

public class FragGridview extends Fragment implements MyAsyncTask.Callbacks{

    private GridView gridview;

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate (R.layout.gridviewgson, container, false);
        gridview = view.findViewById (R.id.gridview);
        MyAsyncTask task=new MyAsyncTask();
        task.setCallbacks(this);
        task.execute("http://www.xieast.com/api/news/news.php?page=1");
        return view;
    }

    @Override
    public String getData(String string) {
        Gson gson = new Gson();
        JsonBean listBean = gson.fromJson(string, JsonBean.class);
        List<JsonBean.DataBean> list = listBean.getData ();
        gridview.setAdapter(new MyAdapter(list,getActivity()));
        return null;
    }
}

XList配置

public class MyListAdapter extends BaseAdapter {
    private List<JsonBean.DataBean> daat;
    private Context context;

    public MyListAdapter(List<JsonBean.DataBean> daat, Context context) {
        this.daat = daat;
        this.context = context;
    }

    @Override
    public int getCount() {
        return daat.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) {
        return position % 2;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
          switch (getItemViewType (position)) {
              case 0:
                  ViewHolder0 vh=null;
                  if(convertView == null) {
                      convertView = View.inflate (context, R.layout.itme1, null);
                      vh = new ViewHolder0 ();
                      vh.text0 = convertView.findViewById (R.id.text1);
                      vh.image0 = convertView.findViewById (R.id.image1);
                      convertView.setTag (vh);
                  }else{
                      vh =(ViewHolder0) convertView.getTag ();
                  }
                  JsonBean.DataBean bean = daat.get (position);
                  vh.text0.setText (bean.getAuthor_name ()+"");
                  ImageLoader.getInstance ().displayImage (bean.getThumbnail_pic_s02 (),vh.image0);
                  break;
              case 1:
                  ViewHolder1 vh1=null;
                  if(convertView == null) {
                      convertView = View.inflate (context, R.layout.itme2, null);
                      vh1 = new ViewHolder1 ();
                      vh1.text2 = convertView.findViewById (R.id.text2);
                      vh1.image1 = convertView.findViewById (R.id.image2);
                      convertView.setTag (vh1);
                  }else{
                      vh1 =(ViewHolder1) convertView.getTag ();
                  }
                  JsonBean.DataBean bean1 = daat.get (position);
                  vh1.text2.setText (bean1.getAuthor_name ()+"");
                  ImageLoader.getInstance ().displayImage (bean1.getThumbnail_pic_s02 (),vh1.image1);
                  break;
          }
        return convertView;
    }
     class ViewHolder0{
        TextView text0;
        ImageView image0;
     }
     class ViewHolder1{
        TextView text3,text2;
        ImageView image1;
     }

}

GridView配置

public class MyAdapter extends BaseAdapter {

    private List<JsonBean.DataBean> list;
    private Context context;

    public MyAdapter(List<JsonBean.DataBean> list, Context context) {
        this.list = list;
        this.context = context;
    }

    @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) {
        ViewHolder ho=null;
        if(convertView==null){
            convertView = View.inflate (context, R.layout.text, null);
            ho = new ViewHolder();
            ho.text =  convertView.findViewById(R.id.text0);
            ho.image =  convertView.findViewById(R.id.image0);
            convertView.setTag(ho);
        }else{
            ho =(ViewHolder)convertView.getTag ();
        }
        JsonBean.DataBean dataBean = list.get (position);
        ho.text.setText (dataBean.getAuthor_name ());
        ImageLoader.getInstance ().displayImage (dataBean.getThumbnail_pic_s (),ho.image);
        return convertView;
    }
    static class ViewHolder{
        TextView text;
        ImageView image;
    }
}

MyAsyncTask

public class MyAsyncTask extends AsyncTask<String,Void,String>{

    @Override
    protected String doInBackground(String... strings) {
        return HttpUtile.requestHttpGet(strings[0]);
    }
    @Override
    protected void onPostExecute(String s) {
        super.onPostExecute(s);
        callbacks.getData(s);

    }

    public  interface  Callbacks{
        String getData(String string);
    }
    private  Callbacks callbacks;

    public void setCallbacks(Callbacks callbacks) {
        this.callbacks = callbacks;
    }
}

网络请求Http
public class HttpUtile {

public static void httpAsynTask(String strUrl, final CallBackString backString) {
    new AsyncTask<String, Integer, String>() {
        @Override
        protected String doInBackground(String... strings) {

            return httpGet(strings[0]);
        }
        @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);
            //接口回调的方法
            backString.getData(s);
        }
    }.execute(strUrl);
}

public static String requestHttpGet(String strUrl) {

    try { //设置url
        URL url = new URL(strUrl);

        //获取HttpURLConnection
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        //设置为get请求
        connection.setRequestMethod("GET");
        //设置连接主机超时时间
        connection.setConnectTimeout(5000);
        //设置从主机读取数据超时
        connection.setReadTimeout(5000);
        //获取请求码(来判断网络请求是否正确)
        int code = connection.getResponseCode();

        //判断请求是否成功
        if (code == HttpURLConnection.HTTP_OK) {
            //如果数据请求成功
            //就获取数据
            InputStream stream = connection.getInputStream();
            BufferedReader reader = new BufferedReader(new InputStreamReader(stream, "utf-8"));
            //拼接字符串
            StringBuilder builder = new StringBuilder();
            //把数据读取从成字符串
            String str = "";
            while ((str = reader.readLine()) != null) {
                //把一行行数据拼接成一行数据
                builder.append(str);
            }
            //返回拼接后的数据
            return builder.toString();

        }
        //关闭连接
        connection.disconnect();
    } catch (Exception e) {
        e.printStackTrace();
    }
    return null;
}

public interface  CallBackString{
    void   getData(String s);
}

public static  String httpGet(String strUrl){
    try {
        URL url = new URL (strUrl);
        //获取HttpURLConnection
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        //设置为get请求
        connection.setRequestMethod("GET");
        //设置连接主机超时时间
        connection.setConnectTimeout(5000);
        //设置从主机读取数据超时
        connection.setReadTimeout(5000);
        //获取请求码(来判断网络请求是否正确)
        InputStream stream = connection.getInputStream ();
        BufferedReader reader = new BufferedReader(new InputStreamReader(stream));
        //拼接字符串
        StringBuilder builder = new StringBuilder();
        //把数据读取从成字符串
        String str = "";
        while ((str = reader.readLine()) != null) {
                //把一行行数据拼接成一行数据
                builder.append(str);
        }
        connection.disconnect();
        return builder.toString ();
    } catch (Exception e) {
        e.printStackTrace ();
    }
     return null;
}

}
App

public class App extends Application {
    @Override
    public void onCreate() {
        super.onCreate ();
        DisplayImageOptions options = new DisplayImageOptions.Builder ().showImageOnLoading (R.mipmap.ic_launcher).displayer (new CircleBitmapDisplayer ()).build ();

        ImageLoaderConfiguration loader = new ImageLoaderConfiguration.Builder (this).defaultDisplayImageOptions (options).build ();

        ImageLoader imageLoader = ImageLoader.getInstance ();
        imageLoader.init (loader);
    }

}

MyFragmentAdapter

public class MyFragmentAdapter extends FragmentPagerAdapter {
    private ArrayList<Fragment> list;

    public MyFragmentAdapter(FragmentManager fm, ArrayList<Fragment> list) {
        super (fm);
        this.list = list;
    }

    @Override
    public Fragment getItem(int i) {
        return list.get (i);
    }

    @Override
    public int getCount() {
        return list.size ();
    }
}

在这里插入图片描述在这里插入图片描述

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值