1. 程式人生 > >側拉模組Viewpager+Bas類 網路請求

側拉模組Viewpager+Bas類 網路請求

主 ViewPager Xml佈局 注意引用的是android.support.v4.widget.DrawerLayout

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/der"
    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">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
    <android.support.design.widget.TabLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:id="@+id/tab"
        ></android.support.design.widget.TabLayout>
        <android.support.v4.view.ViewPager
            android:id="@+id/pager"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="9"
            ></android.support.v4.view.ViewPager>
    </LinearLayout>
    <fragment
        android:id="@+id/frag"
        class="fengxiangbin.bwei.com.zhoukao3lian.fragment.Che"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        />
</android.support.v4.widget.DrawerLayout>

TabLayout+Viewpager+側拉

public class MainActivity extends AppCompatActivity {
    TabLayout tab;//一定要給側拉附ID
    ViewPager pager;
    private DrawerLayout drawerLayout;
    private ActionBarDrawerToggle toggle;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tab = findViewById(R.id.tab);
        pager = findViewById(R.id.pager);
        drawerLayout = findViewById(R.id.der);
        init();
        initAction();
    }

    private void initAction() {
        //獲取一個ActionBar物件
        android.support.v7.app.ActionBar actionBar = getSupportActionBar();
        //給左上角一張圖片,4.0意思預設圖片,給true就可以直接使用
        actionBar.setDisplayHomeAsUpEnabled(true);
        //有一類提供了繫結DrawerLayout功能
        toggle = new ActionBarDrawerToggle(this, drawerLayout, R.string.open, R.string.close);
        //DrawerLayout和ActionBar關聯
        toggle.syncState();
        drawerLayout.addDrawerListener(toggle);

    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        if (toggle.onOptionsItemSelected(item)){
            return true;
        }

        return super.onOptionsItemSelected(item);
    }

    private void init() {
        ArrayList<Fragment> li = new ArrayList<>();
        li.add(new fragment01());
        li.add(new fragment02());
        li.add(new fragment03());
        MypagerAdaper adaper = new MypagerAdaper(getSupportFragmentManager());
        adaper.setFragments(li);
        pager.setAdapter(adaper);
        tab.addTab(tab.newTab());
        tab.addTab(tab.newTab());
        tab.addTab(tab.newTab());
        tab.setupWithViewPager(pager);
        tab.getTabAt(0).setText("全部");
        tab.getTabAt(1).setText("國內");
        tab.getTabAt(2).setText("國際");

    }
}


XListview Fragment繼承BaseBean類

XListView lv;
    NewsAdaper ad;
    int page = 1;
    private boolean isp = false;
    String path = "http://172.17.8.100/movieApi/movie/v1/findReleaseMovieList?count=10&page="+page+"";
    Handler handler = new Handler();
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View view = View.inflate(getActivity(),R.layout.fragment_fragment01,null);
        lv = view.findViewById(R.id.lv);
        final Date data = new Date();
        ad = new NewsAdaper(getActivity().getLayoutInflater());
        lv.setAdapter(ad);
        new Thread(new Runnable() {
            @Override
            public void run() {
                loadDAta();
            }
        }).start();
        //上拉下拉重新整理
        lv.setPullRefreshEnable(true);
        lv.setPullLoadEnable(true);
        lv.setXListViewListener(new XListView.IXListViewListener() {
            @Override
            public void onRefresh() {

                page = 1;
                isp=false;
                handler.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        lv.stopRefresh();
                        lv.setRefreshTime("剛剛");
                    }
                },2000);


            }

            @Override
            public void onLoadMore() {
                page++;
                isp = true;
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        loadDAta();
                    }
                }).start();

                handler.postDelayed(new Runnable() {
                    @Override
                    public void run() {

                        lv.stopLoadMore();
                    }
                },2000);


            }
        });
        lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                Intent intent = new Intent(getActivity(),DoubleActivity.class);
                intent.putExtra("im",ad.getLi().get(position-1).getImageUrl());
                intent.putExtra("name",ad.getLi().get(position-1).getName());
                intent.putExtra("jie",ad.getLi().get(position-1).getSummary());
                startActivity(intent);
            }
        });
        return view;
    }


    Handler handler1 = new Handler(new Handler.Callback() {
        @Override
        public boolean handleMessage(Message msg) {
            if(page==1){

                ad.setData((ArrayList<NewsBean.ResultBean>) msg.obj);
            }else{
                ad.getData((ArrayList<NewsBean.ResultBean>) msg.obj);
            }

            return true;
        }
    });

    private void loadDAta() {
        //String utils = Beasbean.getInstance().getResult(path);

        NewsBean newsBean = Beasbean.getInstance().getRequest2(path,NewsBean.class);
        handler1.sendMessage(handler1.obtainMessage(0,newsBean.getResult()));
    }


}

Bas類

private static Beasbean instance;
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}
public static Beasbean getInstance() {
    if(instance == null) {
        instance = new Beasbean();
    }
    return instance;
}
public NewsBean getRequest2(String requestUrl, Class clazz) {
    String result = getResult(requestUrl);
    return (NewsBean) new Gson().fromJson(result, clazz);
}
//網路請求
public String getResult(String s){
    String getgson = null;
    try {
        URL url = new URL(s);
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        connection.setConnectTimeout(5000);
        connection.setReadTimeout(5000);
        connection.setRequestMethod("GET");
        int code = connection.getResponseCode();
        if(code==200) {
            String gsonString = stream2String(connection.getInputStream());
            getgson = gsonString;
        }
    } catch (MalformedURLException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
    return getgson;
}

private String stream2String(InputStream inputStream) {
    StringBuilder stringBuilder = new StringBuilder();
    BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));

    try {
        for (String tmp = bufferedReader.readLine(); tmp!=null; tmp=bufferedReader.readLine()) {
            stringBuilder.append(tmp);
        }
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            bufferedReader.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    return stringBuilder.toString();
}

Adaper

ArrayList<NewsBean.ResultBean> li;
LayoutInflater layoutInflater;

public NewsAdaper(LayoutInflater layoutInflater) {
    li = new ArrayList<>();
    this.layoutInflater = layoutInflater;

}

public ArrayList<NewsBean.ResultBean> getLi() {
    return li;
}

public void setData(ArrayList<NewsBean.ResultBean> li) {
    this.li.clear();
    this.li.addAll(li);
    notifyDataSetChanged();

}

public void getData(ArrayList<NewsBean.ResultBean> li) {

    this.li.addAll(li);
    notifyDataSetChanged();

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

@Override
public Object getItem(int position) {
    return li.get(position);
}

@Override
public long getItemId(int position) {
    return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    MyView mv;
    if(convertView!=null){
        mv = (MyView) convertView.getTag();
    }else{
        mv = new MyView();
        convertView = layoutInflater.inflate(R.layout.item,null);
        mv.image = convertView.findViewById(R.id.image);
        mv.t1 = convertView.findViewById(R.id.t1);
        mv.t2 = convertView.findViewById(R.id.t2);
        convertView.setTag(mv);
    }
    ImageLoader.getInstance().displayImage(li.get(position).getImageUrl(),mv.image);
    mv.t1.setText(li.get(position).getName());
    mv.t2.setText(li.get(position).getSummary());

    return convertView;
}
class MyView{
    ImageView image;
    TextView t1;
    TextView t2;
}

Image

ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(this).build();
ImageLoader.getInstance().init(configuration);

需要匯入的資料

implementation 'com.android.support:cardview-v7:27.1.1'
implementation 'com.android.support:design:27.1.1'
implementation 'com.android.support:support-v13:27.1.1'