冲刺第十二天

今天完成的功能:已经完成上拉下拉功能

package com.example.bowenwang;

import android.content.Intent;
import android.os.Bundle;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.viewpager.widget.ViewPager;

import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ProgressBar;
import android.widget.Toast;

import com.scwang.smartrefresh.header.MaterialHeader;
import com.scwang.smartrefresh.layout.SmartRefreshLayout;
import com.scwang.smartrefresh.layout.api.RefreshLayout;
import com.scwang.smartrefresh.layout.constant.SpinnerStyle;
import com.scwang.smartrefresh.layout.footer.BallPulseFooter;
import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener;
import com.scwang.smartrefresh.layout.listener.OnRefreshListener;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;

import okhttp3.FormBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;

public class TabFragment extends Fragment {
    List<Bean> list=new ArrayList<>();
    String classify;
    View rootView;
    SmartRefreshLayout smartRefreshLayout;
    ProgressBar progressBar;
    RecyclerView recyclerView;
    int page=1,page2=1;
    getdata data=new getdata();
    RecyclerAdapter2 recyclerAdapter2;
    List<Bean> listfre=new ArrayList<>();
    private OkHttpClient okHttpClient=new OkHttpClient.Builder()
            .connectTimeout(60 * 1000, TimeUnit.MILLISECONDS)
            .readTimeout(5 * 60 * 1000, TimeUnit.MILLISECONDS)
            .writeTimeout(5 * 60 * 1000, TimeUnit.MILLISECONDS)
            .build();
    private Handler handler=new Handler(){
        @Override
        public void handleMessage(@NonNull Message msg) {
            super.handleMessage(msg);
            list= (List<Bean>) msg.obj;
            progressBar.setVisibility(View.GONE);
            ceshi();
        }
    };
     public static Fragment newInstance() {
         TabFragment fragment = new TabFragment();
         return fragment;
     }
     @Nullable
     @Override
     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
         Bundle bundle=getArguments();
         rootView = inflater.inflate(R.layout.fragment_tag, container, false);
         if(bundle!=null){
             smartRefreshLayout=rootView.findViewById(R.id.refreshLayout);
             progressBar=rootView.findViewById(R.id.progre);
             recyclerView = (RecyclerView) rootView.findViewById(R.id.recycler);
             progressBar.setVisibility(View.VISIBLE);
             smartRefreshLayout.setRefreshHeader(new MaterialHeader(inflater.getContext()).setShowBezierWave(true));
             smartRefreshLayout.setRefreshFooter(new BallPulseFooter(inflater.getContext()).setSpinnerStyle(SpinnerStyle.Scale));
             smartRefreshLayout.setOnRefreshListener(new OnRefreshListener() {
                 @Override
                 public void onRefresh(RefreshLayout refreshLayout) {
                     refreshXiaLa("xiala");
                     smartRefreshLayout.finishRefresh(2000);
                 }
             });
             smartRefreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
                 @Override
                 public void onLoadMore(RefreshLayout refreshLayout) {
                     Toast.makeText(inflater.getContext(),"正在加载",Toast.LENGTH_SHORT).show();
                     refreshXiaLa("more");
                     smartRefreshLayout.finishLoadMore(2000);
                 }
             });
             classify=bundle.getString("shuju");
//             list=data.get(classify);
//             ceshi();
             get();
         }
         return rootView;
     }
     private void refreshXiaLa(String remore){
         if(remore.equals("xiala")){
             if(list.size()-15*page>=0){
                 if(list.size()-15*page>=15){
                     listfre=new ArrayList<>();
                     for(int i=15*page;i<15*page+15;i++){
                         listfre.add(list.get(i));
                     }
                 }
                 else{
                     for(int i=15*page;i<list.size();i++){
                         listfre.add(list.get(i));
                     }
                 }
                 recyclerAdapter2=new RecyclerAdapter2(listfre);
                 recyclerAdapter2.notifyDataSetChanged();
                 recyclerView.setAdapter(recyclerAdapter2);
                 Toast.makeText(rootView.getContext(),"刷新完成",Toast.LENGTH_SHORT).show();
                 page++;
             }
             else {
                 Toast.makeText(rootView.getContext(),"已无更多刷新内容",Toast.LENGTH_SHORT).show();
             }
         }
         else if(remore.equals("more")){
             if(page-page2==1){
                page2++;
             }
             if(list.size()-15*page2>=0){
                 if(list.size()-15*page>=15){
                     for(int i=15*page;i<15*page+15;i++){
                         listfre.add(list.get(i));
                     }
                 }
                 else{
                     for(int i=15*page;i<list.size();i++){
                         listfre.add(list.get(i));
                     }
                 }
                 recyclerAdapter2=new RecyclerAdapter2(listfre);
                 recyclerAdapter2.notifyDataSetChanged();
                 recyclerView.setAdapter(recyclerAdapter2);
                 page2++;
             }
             else{
                 Toast.makeText(rootView.getContext(),"已经到底了",Toast.LENGTH_SHORT).show();
             }
         }
     }
    private void get(){
        new Thread(){
            @Override
            public void run() {
                super.run();
                String url="http://39.103.196.146:8888/getNewsData/GetNewsDataServlet";
                try {
                    String result=getData(url);
                    manageResponse(result);
                    Log.e("内容:",result);
                    Message msg=Message.obtain();
                    msg.obj=list;
                    handler.sendMessage(msg);
                } catch (IOException | JSONException e) {
                    e.printStackTrace();
                }
            }
        }.start();
    }
    private String getData(String url) throws IOException {
        RequestBody responseBody=new FormBody.Builder()
                .add("classify", String.valueOf(classify))
                .build();
        Request request=new Request.Builder().post(responseBody).url(url).build();
        Response response=okHttpClient.newCall(request).execute();
        return response.body().string();
    }
    private void manageResponse(String result) throws JSONException {
        JSONArray jsonArray=new JSONArray(result);
        list=new ArrayList<>();
        listfre=new ArrayList<>();
        page=1;
        page2=1;
        for(int i=0;i<jsonArray.length();i++)
        {
            JSONObject jsonObject=jsonArray.getJSONObject(i);
            String title=jsonObject.getString("title");
            String time=jsonObject.getString("time");
            String place=jsonObject.getString("place");
            String content=jsonObject.getString("content");
            String img=jsonObject.getString("img");
            Bean bean=new Bean();
            bean.setTitle(title);
            bean.setTime(time);
            bean.setPlace(place);
            bean.setContent(content);
            bean.setImg(img);
            list.add(bean);
        }
    }
    private void ceshi(){
        LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity());
        layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
        recyclerView.setLayoutManager(layoutManager);
        if(list.size()>=15){
            for(int i=0;i<15;i++){
                listfre.add(list.get(i));
            }
        }
        else{
            for(int i=0;i<list.size();i++){
                listfre.add(list.get(i));
            }
        }
        recyclerAdapter2=new RecyclerAdapter2(listfre);
        recyclerView.setAdapter(recyclerAdapter2);
    }
 }

  

 

 

 

posted @ 2021-06-02 11:07  3人小队  阅读(35)  评论(0)    收藏  举报