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>阅读更多
相关文章推荐
- Android开发ViewPager的预加载和Fragment的销毁问题,以及tabLayout+ViewPager的使用,tablayout平板适配问题解决
- TabLayout+ViewPager+Fragment实现懒加载
- 巧力避免ViewPager的预加载数据,Tablayout+Fragment+viewPager
- TabLayout +ViewPager+Fragment + RecycleView + webView加载本地html
- 简单基类抽取+http服务+上拉加载下拉刷新
- 侧滑菜单,PullToRefresh上下拉加载,BaseActivity 基类,BaseFragment 基类
- TabLayout+ViewPager+Fragment(懒加载)实现导航栏
- Android应用ViewPager和TabLayout动态加载Fragment,并实现view和tab动态刷新。
- TabLayout实现动态加载Fragment
- TabLayout +ViewPager+Fragment + RecycleView + webView加载本地html
- tablayout+viewpager+fragment懒加载
- TabLayout ViewPager Fragment 实现底部按钮菜单 Fragment 实现懒加载
- 仿 今日头条布局:TabLayout+ViewPager+Fragment+ListView多条目加载+Webview
- TabLayout+ViewPager+Fragment懒加载实现
- 基类抽取http服务(网络判断)数据库多条目加载上拉加载下拉刷新
- TabLayout加载多个Fragment
- 解决TabLayout +ViewPager + Fragment 不让预加载的问题
- ViewPager+TabLayout+Fragment懒加载机制完全解析
- Tablayout+viewpager+Fragment的数据加载问题
- 网络判断+xlistview上拉加载、下拉刷新+Tablayout +图片拖拽缩放+数据库存储 3、案例完成思路要求: 模块一:用fragment+viewpager+Tablayout实现页面