本文實例為大家分享了Android實現多條目加載展示的具體代碼,供大家參考,具體內容如下
展示效果
這里寫圖片描述
依賴
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" />
代碼區
ZhuyeActivity(首頁布局含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(首頁布局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="首頁" 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(首頁以第一個fragment 里面的API是自行供應的接口)
public class OneFragment extends Fragment { private XRecyclerView xr; private List<String> list = new ArrayList<>(); //獲取數據的開始 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(適配器對條目)
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; } //創建適配器有參構造 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());   }   //設置圖片加載器   ((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); } }}以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。
新聞熱點
疑難解答