您的位置:首页 > 其它

Pullrefresh(上拉加载下拉刷新)+Tablayout+Fragment+抽取Base基类

2018-12-16 20:38 120 查看

MainActivity

package com.example.week03.activity;

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.widget.DrawerLayout;
import android.view.View;
import android.widget.Button;
import android.widget.RadioButton;
import android.widget.RadioGroup;

import com.example.week03.fragmentone.Fragmenthree;
import com.example.week03.fragmentone.Fragmentone;
import com.example.week03.fragmentone.Fragmentwo;
import com.example.week03.R;

import java.util.ArrayList;

public class MainActivity extends BaseActivity implements View.OnClickListener {

private ViewPager viewpager;
private RadioButton but1;
private RadioButton but2;
private RadioButton but3;
private RadioGroup group;
private Button butb;
private Button butu;
private Button butt;
private DrawerLayout drawer;
private ArrayList<Fragment> list_fragment;
private Fragmentone fragmentone;
private Fragmentwo fragmentwo;
private Fragmenthree fragmenthree;

@Override
protected int setView() {
return R.layout.activity_main;
}

@Override
protected void initView() {
drawer = findViewById(R.id.drawer);
viewpager = findViewById(R.id.viewpager);
group = findViewById(R.id.group);
but1 = findViewById(R.id.but1);
but2 = findViewById(R.id.but2);
but3 = findViewById(R.id.but3);
butb = findViewById(R.id.butb);
butu = findViewById(R.id.butu);
butt = findViewById(R.id.butt);

butb.setOnClickListener(this);
butu.setOnClickListener(this);
butt.setOnClickListener(this);

}

@Override
protected void initData() {

list_fragment = new ArrayList<>();
fragmentone = new Fragmentone();
fragmentwo = new Fragmentwo();
fragmenthree = new Fragmenthree();
list_fragment.add(fragmentone);
list_fragment.add(fragmentwo);
list_fragment.add(fragmenthree);

viewpager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {
@Override
public Fragment getItem(int i) {
return list_fragment.get(i);
}

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

group.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId){
case R.id.but1:
viewpager.setCurrentItem(0);
break;
case R.id.but2:
viewpager.setCurrentItem(1);
break;
case R.id.but3:
viewpager.setCurrentItem(2);
break;
}
}
});

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

}

@Override
public void onPageSelected(int i) {
switch (i){
case 0:
group.check(R.id.but1);
break;
case 1:
group.check(R.id.but2);
break;
case 2:
group.check(R.id.but3);
break;
}

}

@Override
public void onPageScrollStateChanged(int i) {

}
});

}

@Override
public void onClick(View v) {

switch (v.getId()){
case R.id.butb:
viewpager.setCurrentItem(0);
drawer.closeDrawers();
break;
case R.id.butu:
viewpager.setCurrentItem(1);
drawer.closeDrawers();
break;
case R.id.butt:
viewpager.setCurrentItem(2);
drawer.closeDrawers();
break;
}
}
}

BaseActivity

package com.example.week03.activity;

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;

public abstract class BaseActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(setView());
initView();
initData();
}

protected abstract void initData();

protected abstract void initView();

protected abstract int setView();
}

Fragmentone

package com.example.week03.fragmentone;

import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.example.week03.fragment.FragmentA;
import com.example.week03.fragment.FragmentB;
import com.example.week03.madapter.Madapter_tab;
import com.example.week03.R;

import java.util.ArrayList;

public class Fragmentone extends Fragment {
private TabLayout tab;
private ViewPager viewpager01;

@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment1, container, false);
tab = (TabLayout) view.findViewById(R.id.tab);
viewpager01 = (ViewPager) view.findViewById(R.id.viewpager01);

ArrayList<Fragment> fragment = new ArrayList<>();
fragment.add(new FragmentA());
fragment.add(new FragmentB());

Madapter_tab madapter_tab = new Madapter_tab(getChildFragmentManager());
madapter_tab.setData(fragment);
tab.setupWithViewPager(viewpager01);
viewpager01.setAdapter(madapter_tab);
return view;
}
}

FragmentA

package com.example.week03.fragment;

import android.os.AsyncTask;
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 android.widget.ListView;

import com.example.week03.Gson.GsonBean;
import com.example.week03.HttpUrlConnection.HttpUrl;
import com.example.week03.R;
import com.example.week03.madapter.Madapter_lv;
import com.google.gson.Gson;
import com.handmark.pulltorefresh.library.PullToRefreshBase;
import com.handmark.pulltorefresh.library.PullToRefreshListView;

import java.util.ArrayList;
import java.util.List;

public class FragmentA extends Fragment {
private PullToRefreshListView lv_pull;
private List<GsonBean.ResultBean> list = new ArrayList<>();
private String url = "http://172.17.8.100/movieApi/movie/v1/findHotMovieList?page=1&count=10";
private int page  = 10;
private Madapter_lv madapter_lv;

@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragmenta, container, false);
lv_pull = (PullToRefreshListView) view.findViewById(R.id.lv_pull);
lv_pull.setMode(PullToRefreshBase.Mode.BOTH);

madapter_lv = new Madapter_lv(getActivity(),list);
lv_pull.setAdapter(madapter_lv);
new MyTask().execute(url);
setLinstenner();
return view;
}

private void setLinstenner() {
lv_pull.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
@Override
public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
page = 1;
list.clear();
new MyTask().execute(url+page);
}

@Override
public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
n
1c13f
ew MyTask().execute(url+(++page));
}
});
}

class MyTask extends AsyncTask<String,Void,List<GsonBean.ResultBean>>{

@Override
protected List<GsonBean.ResultBean> doInBackground(String... strings) {
try {
String s = HttpUrl.get(strings[0]);
GsonBean gsonBean = new Gson().fromJson(s, GsonBean.class);
return gsonBean.getResult();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}

@Override
protected void onPostExecute(List<GsonBean.ResultBean> resultBeans) {
Log.e("ss",resultBeans.get(1).getImageUrl()+"");
list.addAll(resultBeans);
madapter_lv.notifyDataSetChanged();
lv_pull.onRefreshComplete();
}
}

}

HttpUrlConnection

package com.example.week03.HttpUrlConnection;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;

public class HttpUrl {

public static String get(String urlstrings) throws Exception{
URL url = new URL(urlstrings);
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
httpURLConnection.setRequestMethod("GET");
httpURLConnection.setConnectTimeout(5000);
int responseCode = httpURLConnection.getResponseCode();

InputStream inputStream = httpURLConnection.getInputStream();
String steam = getInPut(inputStream);
return steam;
}

private static String getInPut(InputStream inputStream) throws IOException {
StringBuilder stringBuilder = new StringBuilder();
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));

String time = null;
while ((time = reader.readLine()) != null){
stringBuilder.append(time);
}

return stringBuilder.toString();
}

}

Madapter_Tab

package com.example.week03.madapter;

import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;

import java.util.ArrayList;

public class Madapter_tab extends FragmentPagerAdapter {

private ArrayList<Fragment> fragments;

public void setData(ArrayList<Fragment> fragment) {
fragments = fragment;
}

public Madapter_tab(FragmentManager fm) {
super(fm);
}

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

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

@Nullable
@Override
public CharSequence getPageTitle(int position) {

switch (position){
case 0:
return "正在热映";
case 1:
return "即将热映";
}

return null;
}

}

Madapter_lv

package com.example.week03.madapter;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

import com.bumptech.glide.Glide;
import com.example.week03.Gson.GsonBean;
import com.example.week03.R;

import java.util.List;

public class Madapter_lv extends BaseAdapter {

private Context context;
private List<GsonBean.ResultBean> list;

public Madapter_lv(Context context, List<GsonBean.ResultBean> list) {
this.context = context;
this.list = list;
}

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

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

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

@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder = null;
if (convertView == null){
viewHolder = new ViewHolder();
convertView = LayoutInflater.from(context).inflate(R.layout.item, parent, false);
viewHolder.tv1 = convertView.findViewById(R.id.tv1);
viewHolder.tv2 = convertView.findViewById(R.id.tv2);
viewHolder.img = convertView.findViewById(R.id.img);
convertView.setTag(viewHolder);
}else {
viewHolder = (ViewHolder) convertView.getTag();
}
Glide.with(convertView).load(list.get(position).getImageUrl()).into(viewHolder.img);
viewHolder.tv1.setText(list.get(position).getName());
viewHolder.tv2.setText(list.get(position).getSummary());

return convertView;
}

class ViewHolder{
ImageView img;
TextView tv1,tv2;
}

}

GsonBean

package com.example.week03.Gson;

import java.util.List;

public class GsonBean {

private String message;
private String status;
private List<ResultBean> result;

public String getMessage() {
return message;
}

public void setMessage(String message) {
this.message = message;
}

public String getStatus() {
return status;
}

public void setStatus(String status) {
this.status = status;
}

public List<ResultBean> getResult() {
return result;
}

public void setResult(List<ResultBean> result) {
this.result = result;
}

public static class ResultBean {

private boolean followMovie;
private int id;
private String imageUrl;
private String name;
private int rank;
private String summary;

public boolean isFollowMovie() {
return followMovie;
}

public void setFollowMovie(boolean followMovie) {
this.followMovie = followMovie;
}

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

public String getImageUrl() {
return imageUrl;
}

public void setImageUrl(String imageUrl) {
this.imageUrl = imageUrl;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public int getRank() {
return rank;
}

public void setRank(int rank) {
this.rank = rank;
}

public String getSummary() {
return summary;
}

public void setSummary(String summary) {
this.summary = summary;
}
}
}

activity_main.xml

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

<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="0dp">

<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_weight="9"
android:layout_height="0dp"></android.support.v4.view.ViewPager>

<RadioGroup
android:id="@+id/group"
android:layout_weight="1"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="0dp">

<RadioButton
android:id="@+id/but1"
android:layout_weight="1"
android:gravity="center"
android:text="首页"
android:button="@null"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<RadioButton
android:id="@+id/but2"
android:layout_weight="1"
android:gravity="center"
android:text="收藏"
android:button="@null"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<RadioButton
android:id="@+id/but3"
android:layout_weight="1"
android:gravity="center"
android:text="我的"
android:button="@null"
android:layout_width="match_parent"
android:layout_height="match_parent" />

</RadioGroup>
</LinearLayout>

<LinearLayout
android:orientation="vertical"
android:layout_gravity="left"
android:layout_width="match_parent"
android:layout_height="match_parent">

<Button
android:id="@+id/butb"
android:text="首页"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<Button
android:id="@+id/butu"
android:text="收藏"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<Button
android:id="@+id/butt"
android:text="我的"
android:layout_width="match_parent"
android:layout_height="wrap_content" />

</LinearLayout>

</android.support.v4.widget.DrawerLayout>

fragment1

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:background="#ffccff"
android:orientation="vertical"
android:layout_height="match_parent">

<android.support.design.widget.TabLayout
android:id="@+id/tab"
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="0dp"></android.support.design.widget.TabLayout>

<android.support.v4.view.ViewPager
android:id="@+id/viewpager01"
android:layout_weight="9"
android:layout_width="match_parent"
android:layout_height="0dp"></android.support.v4.view.ViewPager>

</LinearLayout>

fragmenta

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:background="#99ffcc"
android:layout_height="match_parent">

<com.handmark.pulltorefresh.library.PullToRefreshListView
android:id="@+id/lv_pull"
android:layout_width="match_parent"
android:layout_height="match_parent"></com.handmark.pulltorefresh.library.PullToRefreshListView>

</LinearLayout>
阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: