TabLayout与PullToRefreshListView
来源:互联网 发布:好了歌注 知乎 编辑:程序博客网 时间:2024/05/21 22:56
<?xml version="1.0" encoding="utf-8"?><android.support.v4.widget.DrawerLayout 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" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <FrameLayout android:id="@+id/fl_main" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="9" /> <RadioGroup android:id="@+id/group" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:gravity="center" android:orientation="horizontal"> <RadioButton android:id="@+id/but1" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:button="@null" android:gravity="center" android:text="首页" /> <RadioButton android:id="@+id/but2" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:button="@null" android:gravity="center" android:text="想法" /> <RadioButton android:id="@+id/but3" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:button="@null" android:gravity="center" android:text="市场" /> <RadioButton android:id="@+id/but4" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:button="@null" android:gravity="center" android:text="通知" /> <RadioButton android:id="@+id/but5" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:button="@null" android:gravity="center" android:text="更多" /> </RadioGroup> </LinearLayout> <LinearLayout android:layout_width="300dp" android:layout_height="match_parent" android:background="@color/colorAccent" android:layout_gravity="start" > <TextView android:layout_width="match_parent" android:text="xxxxx" android:layout_height="match_parent" /> </LinearLayout></android.support.v4.widget.DrawerLayout>
import android.os.Bundle;import android.support.annotation.IdRes;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentManager;import android.support.v4.app.FragmentTransaction;import android.support.v7.app.AppCompatActivity;import android.util.Log;import android.widget.RadioGroup;import com.bwie.zhoukao2demo.fragment.MainFragment;import java.util.ArrayList;public class MainActivity extends AppCompatActivity { //定义变量 private ArrayList<Fragment> fragmentList = new ArrayList<Fragment>(); private RadioGroup group; private FragmentManager supportFragmentManager; String TAG = "wzq"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //初始化组件 group = (RadioGroup) findViewById(R.id.group); initFragment(); supportFragmentManager = getSupportFragmentManager(); FragmentTransaction fragmentTransaction = supportFragmentManager.beginTransaction(); fragmentTransaction.add(R.id.fl_main, fragmentList.get(0)).commit(); group.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { //要切换fragment @Override public void onCheckedChanged(RadioGroup radioGroup, @IdRes int i) { Log.e(TAG, "onCheckedChanged 点击的id:" + i); switch (i) { case R.id.but1: supportFragmentManager.beginTransaction().replace(R.id.fl_main, new MainFragment()).commit(); Log.e(TAG, "onCheckedChanged: 点击button1"); break; case R.id.but2: getSupportFragmentManager().beginTransaction().replace(R.id.fl_main, new MainFragment()).commit(); Log.e(TAG, "onCheckedChanged: 点击button2"); break; case R.id.but3: getSupportFragmentManager().beginTransaction().replace(R.id.fl_main, new MainFragment()).commit(); Log.e(TAG, "onCheckedChanged: 点击button3" ); break; case R.id.but4: getSupportFragmentManager().beginTransaction().replace(R.id.fl_main, new MainFragment()).commit(); break; case R.id.but5: getSupportFragmentManager().beginTransaction().replace(R.id.fl_main, new MainFragment()).commit(); break; } } }); } //准备好所有的fragment private void initFragment() { for (int i = 0; i < 5; i++) { fragmentList.add(new MainFragment()); } }}--------------------------------
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <EditText android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:hint="羞羞的铁拳 ,开心麻花" /> <android.support.design.widget.TabLayout android:id="@+id/tl_titles" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1"> </android.support.design.widget.TabLayout> <android.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="8"></android.support.v4.view.ViewPager></LinearLayout>
public class MainFragment extends Fragment { private TabLayout tabLayout; private ViewPager viewpager; ArrayList fragmentList = new ArrayList<Fragment>(); String[] temp = {"你的 ","我的","他的"}; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_a, null); tabLayout = (TabLayout) view.findViewById(R.id.tl_titles); viewpager = (ViewPager) view.findViewById(R.id.viewpager); return view; } @Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); // fragment中嵌套fragment, Manager需要用(getChildFragmentManager()) MPagerAdapter mPagerAdapter = new MPagerAdapter(getChildFragmentManager()); initFragment(); tabLayout.setTabMode(TabLayout.MODE_FIXED); tabLayout.setupWithViewPager(viewpager); viewpager.setAdapter(mPagerAdapter); } private void initFragment() { for (int i = 0; i < 3; i++) { fragmentList.add(new ChildFragment()); } } class MPagerAdapter extends FragmentPagerAdapter { public MPagerAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { return (Fragment) fragmentList.get(position); } @Override public int getCount() { return fragmentList.size(); } @Override public Object instantiateItem(ViewGroup container, int position) { return super.instantiateItem(container, position); } //返回tablayout的标题文字; @Override public CharSequence getPageTitle(int position) { return temp[position]; } }}_______________________________________
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/colorPrimary" android:orientation="vertical"> <com.handmark.pulltorefresh.library.PullToRefreshListView android:id="@+id/plv" android:layout_width="match_parent" android:layout_height="match_parent"/></LinearLayout>
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <com.youth.banner.Banner android:id="@+id/banner" android:layout_width="match_parent" android:layout_height="150dp" android:orientation="vertical"/></LinearLayout>
public class ChildFragment extends Fragment { int page = 1;//请求接口的第几页; String baseUrl = "http://gank.io/api/data/Android/10/"; private PullToRefreshListView plv; //定义一个总的集合, 以后上拉加载的时候,往这个集合里追加数据,更新适配器; List<Product.ResultsBean> list = new ArrayList<>(); private MAdapter mAdapter; private ListView lv; private Banner banner; String[] imagUrls = {"http://img.my.csdn.net/uploads/201407/26/1406383299_1976.jpg", "http://img.my.csdn.net/uploads/201407/26/1406383299_1976.jpg", "http://img.my.csdn.net/uploads/201407/26/1406383299_1976.jpg", "http://img.my.csdn.net/uploads/201407/26/1406383299_1976.jpg", "http://img.my.csdn.net/uploads/201407/26/1406383299_1976.jpg"}; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_b, null); //这个view是头部 View header_banner = inflater.inflate(R.layout.header_banner, null); banner = (Banner) header_banner.findViewById(R.id.banner); plv = (PullToRefreshListView) view.findViewById(R.id.plv); //得到plv封装的listview,方便我们添加头部 lv = plv.getRefreshableView(); lv.addHeaderView(header_banner); return view; } @Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); getNetData(page);//获取list集合的方法; getNetBannerData(); mAdapter = new MAdapter();//主线程继续往下走,和刚才开启的线程互不影响;0.0001 lv.setAdapter(mAdapter); plv.setMode(PullToRefreshBase.Mode.BOTH);//上下拉都支持 plv.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() { @Override public void onPullDownToRefresh(PullToRefreshBase<ListView> pullToRefreshBase) { list.clear(); new MAsync().execute(baseUrl + 1); } @Override public void onPullUpToRefresh(PullToRefreshBase<ListView> pullToRefreshBase) { page++; getNetData(page); } }); } private void getNetData(int page) { new MAsync().execute(baseUrl + page); } private class MAdapter extends BaseAdapter { @Override public int getCount() { return list.size(); } @Override public Object getItem(int i) { return list.get(i); } @Override public long getItemId(int i) { return i; } /** * 多条目 * * @param i * @param view * @param viewGroup * @return */ @Override public View getView(int i, View view, ViewGroup viewGroup) { view = View.inflate(getActivity(), R.layout.item01, null); return view; } } class MAsync extends AsyncTask<String, Void, String> { @Override protected String doInBackground(String... strings) { return NetWordUtils.getNetjson(strings[0]); } @Override protected void onPostExecute(String s) { super.onPostExecute(s); Gson gson = new Gson(); Product product = gson.fromJson(s, Product.class); List<Product.ResultsBean> results = product.getResults(); list.addAll(results); mAdapter.notifyDataSetChanged(); plv.onRefreshComplete(); } } private void getNetBannerData() { banner.setImages(Arrays.asList(imagUrls));//设置图片集合 banner.setImageLoader(new BannerLoader()); banner.start(); } /** * 加载轮播图的类;--Banner的 */ class BannerLoader extends ImageLoader { //要实现具体如哪个功能或框架来加载图片 @Override public void displayImage(Context context, Object path, ImageView imageView) { com.nostra13.universalimageloader.core.ImageLoader instance = com.nostra13.universalimageloader.core.ImageLoader.getInstance(); instance.displayImage((String) path, imageView); } }}
阅读全文
0 0
- TabLayout与PullToRefreshListView
- TabLayout+PullToRefreshListView连用
- TabLayout+PullToRefreshListView连用
- 侧滑,tablayout,PullToRefreshListView
- PullToRefreshListView+Tablayout+Fragment+DrawerLayout
- TabLayout标题栏传值+PullToRefreshListView展示数据
- TabLayout上导航栏+PullToRefreshListView展示数据
- TabLayout+PullToRefreshListView上拉刷新,下拉加载,imageloader自定义
- 抽屉布局+Fragment+TabLayout上导航栏+PullToRefreshListView+轮播图+PullToRefreshGridView
- PullToRefreshListView
- PullToRefreshListView
- PullToRefreshListView
- PullToRefreshListView
- PullToRefreshListView
- PullToRefreshListView
- PullToRefreshListView
- PullToRefreshListView
- PullToRefreshListView
- ros 安装cartographer
- Android 7.0 适配相机及裁剪图片
- [绍棠_Swift] Swift
- sublime 插件
- Java注释@interface的用法【转】
- TabLayout与PullToRefreshListView
- H5本地存储sessionStorage和localStorage的区别
- linux安装jdk
- 浏览器的工作原理:新式网络浏览器幕后揭秘
- windows 下xdebug 安装和使用
- appium-连接真机
- 三子棋
- 在C#中,Json的序列化和反序列化的几种方式总结
- ant删除文件操作