欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android XRecyclerView實(shí)現(xiàn)多條目加載

 更新時(shí)間:2022年08月28日 09:19:33   作者:飛鳥96  
這篇文章主要為大家詳細(xì)介紹了Android XRecyclerView實(shí)現(xiàn)多條目加載效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了Android實(shí)現(xiàn)多條目加載展示的具體代碼,供大家參考,具體內(nèi)容如下

展示效果

依賴

testCompile 'junit:junit:4.12'
 compile 'com.hjm:BottomTabBar:1.1.1'
 compile 'com.android.support:design:23.4.0'
 compile 'com.android.support:mediarouter-v7:25.0.0'
 compile 'com.android.support:appcompat-v7:25.0.0'
 compile 'com.android.support:recyclerview-v7:25.0.0'
 compile 'com.jcodecraeer:xrecyclerview:1.3.2'
 compile 'com.squareup.okio:okio:1.5.0'
 compile 'com.squareup.okhttp3:okhttp:3.2.0'
 compile 'com.squareup.okhttp3:logging-interceptor:3.4.1'
 compile files('libs/gson-2.3.1.jar')
 compile files('libs/universal-image-loader-1.9.3.jar')
 compile 'com.youth.banner:banner:1.4.9'
 compile 'com.github.bumptech.glide:glide:3.7.0'

添加配置

<uses-permission android:name="android.permission.INTERNET" />
 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
 <uses-permission android:name="android.permission.READ_PHONE_STATE" />
 <uses-permission android:name="android.permission.CAMERA" />
 <uses-permission android:name="android.permission.VIBRATE" />

代碼區(qū)

ZhuyeActivity(首頁(yè)布局含TabLayout)

public class ZhuyeActivity extends AppCompatActivity {
 private ViewPager viewpager;
 private TabLayout tablayout;
 private FragmentAdapter adapter;
 private List<Fragment> fragments;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_zhuye);
  viewpager=(ViewPager)findViewById(R.id.viewpager);
  tablayout=(TabLayout)findViewById(R.id.tablayout);
  fragments=new ArrayList<Fragment>();
  OneFragment oneFragment = new OneFragment();
  TwoFragment twoFragment = new TwoFragment();
  ThreeFragment threeFragment = new ThreeFragment();
  FourFragment fourFragment = new FourFragment();
  fragments.add(oneFragment);
  fragments.add(twoFragment);
  fragments.add(threeFragment);
  fragments.add(fourFragment);
  adapter = new FragmentAdapter(getSupportFragmentManager(),fragments);
  viewpager.setAdapter(adapter);
  tablayout.setupWithViewPager(viewpager);
 }
}

activity_zhuye(首頁(yè)布局xml文件)

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:id="@+id/activity_zhuye"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 tools:context="test.bwie.com.ykmn.ZhuyeActivity">
 <RelativeLayout
  android:id="@+id/app_top"
  android:layout_width="match_parent"
  android:layout_height="50dp"
  android:background="@color/colorPrimaryDark"
  >
  <TextView
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:text="首頁(yè)"
   android:textSize="25dp"
   android:textColor="@color/colorBai"
   android:layout_centerInParent="true"
   />
 </RelativeLayout>
 <android.support.design.widget.TabLayout
  android:layout_width="match_parent"
  android:layout_height="40dp"
  android:id="@+id/tablayout"
  android:layout_below="@id/app_top"
  >
 </android.support.design.widget.TabLayout>

 <android.support.v4.view.ViewPager
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:id="@+id/viewpager"
  android:layout_below="@id/tablayout"
  />
</RelativeLayout>

OneFragment(首頁(yè)以第一個(gè)fragment 里面的API是自行供應(yīng)的接口)

public class OneFragment extends Fragment {
 private XRecyclerView xr;
 private List<String> list = new ArrayList<>();
 //獲取數(shù)據(jù)的開始
 private int curr;
 private XRAdapter adapter;
 @Nullable
 @Override
 public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
  View view = inflater.inflate(R.layout.y1, null, false);
  //初始化xr控件
  xr=(XRecyclerView)view.findViewById(R.id.xre_xrv);

  //加布局管理器
  LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity());
  layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
  xr.setLayoutManager(layoutManager);

  getData(API.TYPE_HOME,1);
  xr.setLoadingListener(new XRecyclerView.LoadingListener() {

    /*下拉刷新*/

   @Override
   public void onRefresh() {
    curr=0;
    list.clear();
    getData(API.TYPE_HOME,curr);
    xr.refreshComplete();
   }

    /*上拉加載*/

   @Override
   public void onLoadMore() {
    /*curr++;
    getData(API.TYPE_HOME,curr);
    xr.refreshComplete();*/
//    xr.loadMoreComplete();
   }
  });
  return view;
 }
 private void getData(String url,int curr){
  OkHttp3Utils.getInstance().doGet(url, new GsonObjectCallback<MyGsonFr>() {
   @Override
   public void onUi(MyGsonFr myGsonFr) {
    XRAdapter mxradapter=new XRAdapter(getActivity(),myGsonFr.getTop_stories());
    xr.setAdapter(mxradapter);
   }

   @Override
   public void onFailed(Call call, IOException e) {

   }
  });
 }
}

y1(OneFragment的布局代碼xml)

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 >
 <com.jcodecraeer.xrecyclerview.XRecyclerView
  android:id="@+id/xre_xrv"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  >
 </com.jcodecraeer.xrecyclerview.XRecyclerView>
</RelativeLayout>

XRAdapter(適配器對(duì)條目)

 

public class XRAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
 List<MyGsonFr.TopStoriesBean> lists;
 Context mcontext;
 ArrayList mlist;
 private enum Item_Type{
  Typeone,Typetwo,Typethree,Typefour,Typefive,Typesix,Typeseven;
 }
 //創(chuàng)建適配器有參構(gòu)造


 public XRAdapter(Context mcontext, List<MyGsonFr.TopStoriesBean> data) {
  this.lists = data;
  this.mcontext = mcontext;
 }

 @Override
 public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
  if(viewType==Item_Type.Typeone.ordinal()){
   View mView = LayoutInflater.from(mcontext).inflate(R.layout.recycle_item_a, null);
   ViewHolderA viewHolder = new ViewHolderA(mView);
   return viewHolder;
  }else if(viewType==Item_Type.Typetwo.ordinal()){
   View mView = LayoutInflater.from(mcontext).inflate(R.layout.recycle_item_b, null);
   ViewHolderB viewHolder = new ViewHolderB(mView);
   return viewHolder;
  }
  return null;
 }

 @Override
 public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
  if (holder instanceof ViewHolderA){
   mlist=new ArrayList();
   for (int i=0;i<lists.size();i++){
    mlist.add(lists.get(i).getImage());
   }
   //設(shè)置圖片加載器
   ((ViewHolderA)holder).mbanner.setImageLoader(new GlideImageLoader());
   ((ViewHolderA)holder).mbanner.setImages(mlist);
   ((ViewHolderA)holder).mbanner.start();
  }else if(holder instanceof ViewHolderB){
   mlist=new ArrayList();
   for (int i=0;i<lists.size();i++){
    mlist.add(lists.get(i).getImage());
   }
   ((ViewHolderB)holder).re.setLayoutManager(new LinearLayoutManager(mcontext));
   ((ViewHolderB)holder).re.setAdapter(new ViewHolderBa(lists,mcontext));
  }
 }

 @Override
 public int getItemCount() {
  return 2;
 }

 @Override
 public int getItemViewType(int position) {
  if(position==0){
   return Item_Type.Typeone.ordinal();
  }else if(position==1){
   return Item_Type.Typetwo.ordinal();
  }
  return -1;
 }
 class ViewHolderA extends RecyclerView.ViewHolder{
  private Banner mbanner;
  public ViewHolderA(View itemView) {
   super(itemView);
   mbanner=(Banner)itemView.findViewById(R.id.mybanner);
  }
 }
 class ViewHolderB extends RecyclerView.ViewHolder{
  private RecyclerView re;
  public ViewHolderB(View itemView) {
   super(itemView);
   re = (RecyclerView) itemView.findViewById(R.id.id_recyclerview);
  }
 }
}

recycle_item_a(banner輪播xml)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:orientation="vertical" android:layout_width="match_parent"
 android:layout_height="150dp">
 <com.youth.banner.Banner
  android:id="@+id/mybanner"
  android:layout_width="match_parent"
  android:layout_height="150dp">
 </com.youth.banner.Banner>
</LinearLayout>

recycle_item_a(Recyclerview布局xml)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:app="http://schemas.android.com/apk/res-auto"
 android:layout_width="match_parent"
 android:orientation="vertical"
 android:layout_height="match_parent">
 <android.support.v7.widget.RecyclerView
  android:id="@+id/id_recyclerview"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  />
</LinearLayout>

ViewHolderBa(Recyclerview小適配器)

public class ViewHolderBa extends RecyclerView.Adapter<ViewHolderBa.MyViewHolder>{

 List<MyGsonFr.TopStoriesBean> lists;
 Context mc;

 public ViewHolderBa(List<MyGsonFr.TopStoriesBean> lists, Context mc) {
 this.lists = lists;
 this.mc = mc;
 }

 @Override
 public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
 MyViewHolder holder = new MyViewHolder(LayoutInflater.from(mc).inflate(R.layout.item_home, parent, false));
 return holder;
 }

 @Override
 public void onBindViewHolder(MyViewHolder holder, int position) {
 holder.tv.setText(lists.get(position).getTitle());
 ImageLoader instance = ImageLoader.getInstance();
 instance.displayImage(lists.get(position).getImage(),holder.img);
 }

 @Override
 public int getItemCount() {
 return lists.size();
 }

 class MyViewHolder extends RecyclerView.ViewHolder {

 TextView tv;
 ImageView img;

 public MyViewHolder(View view) {
  super(view);
  tv = (TextView) view.findViewById(R.id.text_a1);
  img = (ImageView) view.findViewById(R.id.img_a1);
 }
 }
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Android精靈動(dòng)畫用法實(shí)例

    Android精靈動(dòng)畫用法實(shí)例

    這篇文章主要介紹了Android精靈動(dòng)畫用法,實(shí)例分析了Android動(dòng)畫的相關(guān)使用技巧,需要的朋友可以參考下
    2015-06-06
  • 用Android MenuInflater創(chuàng)建菜單項(xiàng)的方法步驟

    用Android MenuInflater創(chuàng)建菜單項(xiàng)的方法步驟

    本篇文章小編為大家介紹,用Android MenuInflater創(chuàng)建菜單項(xiàng)的方法步驟。需要的朋友參考下
    2013-04-04
  • 詳解Andorid開發(fā)中反射機(jī)制是怎么一回事

    詳解Andorid開發(fā)中反射機(jī)制是怎么一回事

    反射機(jī)制是在運(yùn)行狀態(tài)中,對(duì)于任何一個(gè)類,都可以知道這個(gè)類的所有屬性和方法,對(duì)于任何一個(gè)對(duì)象,都可以調(diào)用它所有的方法和屬性,修改部分類型信息,這種動(dòng)態(tài)獲取信息以及動(dòng)態(tài)調(diào)用對(duì)象方法的功能稱為Java的反射機(jī)制
    2022-11-11
  • Android實(shí)現(xiàn)下載m3u8視頻文件問(wèn)題解決

    Android實(shí)現(xiàn)下載m3u8視頻文件問(wèn)題解決

    這篇文章主要介紹了Android實(shí)現(xiàn)下載m3u8視頻文件,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧
    2023-01-01
  • Android自定義ViewGroup之FlowLayout(三)

    Android自定義ViewGroup之FlowLayout(三)

    這篇文章主要為大家詳細(xì)介紹了Android自定義ViewGroup之FlowLayout,常用于關(guān)鍵字標(biāo)簽,搜索熱詞列表等功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • Android ProgressDialog進(jìn)度條使用詳解

    Android ProgressDialog進(jìn)度條使用詳解

    這篇文章主要對(duì)Android開發(fā)之ProgressDialog讀取文件進(jìn)度進(jìn)行解析,感興趣的朋友可以參考一下
    2016-02-02
  • Android開發(fā)之日歷CalendarView用法示例

    Android開發(fā)之日歷CalendarView用法示例

    這篇文章主要介紹了Android開發(fā)之日歷CalendarView用法,簡(jiǎn)單分析了日歷CalendarView組件的功能、屬性設(shè)置方法、界面布局、事件監(jiān)聽等相關(guān)操作技巧,需要的朋友可以參考下
    2019-03-03
  • Android中Hilt的使用詳解

    Android中Hilt的使用詳解

    Hilt?是?Android?的依賴項(xiàng)注入庫(kù),可減少在項(xiàng)目中執(zhí)行手動(dòng)依賴項(xiàng)注入的樣板代碼,本文就來(lái)為大家介紹一下Hilt的具體使用吧,希望對(duì)大家有所幫助
    2023-06-06
  • 淺析KJFrameForAndroid框架如何高效加載Bitmap

    淺析KJFrameForAndroid框架如何高效加載Bitmap

    Bitmap是Android系統(tǒng)中的圖像處理的最重要類之一。用它可以獲取圖像文件信息,進(jìn)行圖像剪切、旋轉(zhuǎn)、縮放等操作,并可以指定格式保存圖像文件。本文主要是從KJFrameForAndroid框架中分析高效加載Bitmap的方法
    2014-07-07
  • 詳解Android 手機(jī)衛(wèi)士設(shè)置向?qū)ы?yè)面

    詳解Android 手機(jī)衛(wèi)士設(shè)置向?qū)ы?yè)面

    這篇文章主要介紹了詳解Android 手機(jī)衛(wèi)士設(shè)置向?qū)ы?yè)面的相關(guān)資料,需要的朋友可以參考下
    2016-04-04

最新評(píng)論