国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

Android 使用RecycleView列表實現加載更多的示例代碼

瀏覽:98日期:2022-09-18 18:52:25
1.界面布局

<?xml version='1.0' encoding='utf-8'?><FrameLayout 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='#f0f3f5' tools:context='.MainActivity'> <LinearLayoutandroid:layout_width='match_parent'android:layout_height='match_parent'android:orientation='vertical'tools:context='.MainActivity'><ImageView android:layout_width='match_parent' android:layout_height='wrap_content' android:src='http://www.cgvv.com.cn/bcjs/@mipmap/logo'/><LinearLayout android:layout_width='match_parent' android:layout_height='wrap_content' android:layout_marginTop='10dp' android:orientation='vertical'> <LinearLayoutandroid:layout_width='match_parent'android:layout_height='wrap_content'android:orientation='horizontal'android:gravity='center'><TextView android:layout_width='0dp' android:layout_weight='1' android:layout_height='wrap_content' android:gravity='center' android:text='電影名'/><LinearLayout android:layout_width='0dp' android:layout_weight='1' android:gravity='center' android:layout_height='wrap_content' android:orientation='horizontal'> <TextViewandroid:layout_width='wrap_content'android:layout_height='match_parent'android:text='電影評分' /></LinearLayout><TextView android:layout_width='0dp' android:layout_weight='1' android:gravity='center' android:layout_height='wrap_content' android:text='電影圖片'/> </LinearLayout></LinearLayout><androidx.swiperefreshlayout.widget.SwipeRefreshLayout android:layout_height='wrap_content' android:layout_width='wrap_content' android:id='@+id/s1'> <androidx.recyclerview.widget.RecyclerViewandroid: android:layout_width='match_parent'android:layout_height='wrap_content' /></androidx.swiperefreshlayout.widget.SwipeRefreshLayout> </LinearLayout></FrameLayout>

列表布局list.xml

<?xml version='1.0' encoding='utf-8'?><LinearLayout xmlns:android='http://schemas.android.com/apk/res/android' android:orientation='horizontal' android:layout_width='match_parent' android:layout_height='160dp'> <TextViewandroid: android:layout_width='0dp'android:layout_weight='1.5'android:gravity='center'android:layout_height='wrap_content'android:layout_gravity='center'android:text='我不是藥神'/> <TextViewandroid: android:layout_width='0dp'android:layout_weight='1'android:layout_height='wrap_content'android:layout_gravity='center'android:gravity='center'android:text='9.0'/> <ImageViewandroid: android:layout_width='0dp'android:layout_weight='1.5'android:layout_height='150dp'android:padding='20dp'android:src='http://www.cgvv.com.cn/bcjs/@mipmap/ic_launcher'/></LinearLayout>

加載更多布局foot_view.xml

<?xml version='1.0' encoding='utf-8'?><TextView xmlns:android='http://schemas.android.com/apk/res/android' xmlns:tools='http://schemas.android.com/tools' android: android:layout_width='match_parent' android:layout_height='wrap_content' android:padding='10dp' android:gravity='center' tools:text='下拉刷新' android:orientation='vertical'/>

Android 使用RecycleView列表實現加載更多的示例代碼

2.功能實現

(1)添加網絡權限

<uses-permission android:name='android.permission.INTERNET'/>

(2)添加使用到的第三方庫

implementation ’com.android.support:design:28.0.0’ implementation ’com.android.support:support-v4:28.0.0’ implementation ’com.android.support:appcompat-v7:28.0.0’ implementation ’com.squareup.okhttp3:okhttp:3.12.1’ debugImplementation ’com.squareup.okhttp3:logging-interceptor:3.12.1’ implementation ’com.google.code.gson:gson:2.8.5’ implementation ’com.github.bumptech.glide:glide:4.9.0’ annotationProcessor ’com.github.bumptech.glide:compiler:4.9.0’

(3)數據解析使用GsonFormat插件,快速將json字符串轉換成一個Java Bean,免去我們根據json字符串手寫對應Java Bean的過程。定義一個類OneModel.class

public class OneModel implements Serializable {}

使用快捷鍵(Alt+s)粘貼全部過去數據,之后一直點擊OK

Android 使用RecycleView列表實現加載更多的示例代碼

(4)綁定控件ID

private RecyclerView r1;private SwipeRefreshLayout s1;private LinearLayoutManager linearLayoutManager;private Adapter adapter;

Android 使用RecycleView列表實現加載更多的示例代碼

(5)定義一個Adapter類

package com.example.note4;import android.content.Context;import android.graphics.Color;import android.os.Handler;import android.util.Log;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;import android.widget.TextView;import androidx.recyclerview.widget.RecyclerView;import com.bumptech.glide.Glide;import java.util.List;public class Adapter extends RecyclerView.Adapter<Adapter.ViewHolder> { private Context mContext; private List<DateModel.SubjectsBean> mData;//數據 private int max_count = 6;//最大顯示數 private Boolean isFootView = false;//是否添加了FootView private String footViewText = '';//FootView的內容 //兩個final int類型表示ViewType的兩種類型 private final int NORMAL_TYPE = 0; private final int FOOT_TYPE = 1111; public Adapter(Context context, List<DateModel.SubjectsBean> data) {this.mContext = context;this.mData = data; } public class ViewHolder extends RecyclerView.ViewHolder {public TextView t3,t2;public ImageView i1;private TextView tvFootView;//初始化viewHolder,此處綁定后在onBindViewHolder中可以直接使用public ViewHolder(View itemView, int viewType) { super(itemView); if (viewType == NORMAL_TYPE) {t3 = (TextView) itemView.findViewById(R.id.t3);t2 = (TextView) itemView.findViewById(R.id.t2);i1=(ImageView)itemView.findViewById(R.id.i1); } else if (viewType == FOOT_TYPE) {tvFootView = (TextView) itemView.findViewById(R.id.tv_foot); }} } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {View normal_views = LayoutInflater.from(parent.getContext()).inflate(R.layout.list, parent, false);View foot_view = LayoutInflater.from(parent.getContext()).inflate(R.layout.foot_view, parent, false);if (viewType == FOOT_TYPE) return new ViewHolder(foot_view, FOOT_TYPE);return new ViewHolder(normal_views, NORMAL_TYPE); } @Override public int getItemViewType(int position) {if (position == max_count - 1) { return FOOT_TYPE;}return NORMAL_TYPE; } @Override public void onBindViewHolder(ViewHolder holder, int position) {DateModel.SubjectsBean subjectsBean=mData.get(position);//如果footview存在,并且當前位置ViewType是FOOT_TYPEif (isFootView && (getItemViewType(position) == FOOT_TYPE)) { holder.tvFootView.setText(footViewText); // 刷新太快 所以使用Hanlder延遲兩秒 Handler handler = new Handler(); handler.postDelayed(new Runnable() {@Overridepublic void run() { max_count += 5; notifyDataSetChanged();} }, 1000);} else { holder.t2.setText(subjectsBean.getTitle()); holder.t3.setText(subjectsBean.getRate()); Glide.with(mContext).load(subjectsBean.getCover()).into(holder.i1);} } @Override public int getItemCount() {if (mData.size() <= max_count) { return mData.size();}return max_count; } //創建一個方法來設置footView中的文字 public void setFootViewText(String footViewText) {isFootView = true;this.footViewText = footViewText; }}

(6)網絡請求

public void getDate(DateModel dateModel) {if(dateModel==null||dateModel.getSubjects()==null){ Toast.makeText(MainActivity.this,'失敗',Toast.LENGTH_SHORT).show(); return;}Toast.makeText(MainActivity.this,'成功',Toast.LENGTH_SHORT).show();adapter=new Adapter(MainActivity.this,dateModel.getSubjects());adapter.setFootViewText('加載中...');r1.setAdapter(adapter);s1.setRefreshing(false); } public void requestDate() {String url = 'https://movie.douban.com/j/search_subjects?type=movie&tag=%E8%B1%86%E7%93%A3%E9%AB%98%E5%88%86&sort=recommend&page_limit=200&page_start=0';OkHttpClient okHttpClient = new OkHttpClient();final Request request = new Request.Builder().url(url).get().build();Call call = okHttpClient.newCall(request);call.enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) {runOnUiThread(new Runnable() { @Override public void run() {Toast.makeText(MainActivity.this, '網絡連接失敗', Toast.LENGTH_SHORT).show(); }}); } @Override public void onResponse(Call call, Response response) throws IOException {String result = response.body().string();Gson gson = new Gson();final DateModel dateModel = gson.fromJson(result, DateModel.class);runOnUiThread(new Runnable() { @Override public void run() {Toast.makeText(MainActivity.this, '網絡連接成功', Toast.LENGTH_SHORT).show();getDate(dateModel); }}); }}); }

(7)功能實現

Android 使用RecycleView列表實現加載更多的示例代碼

linearLayoutManager=new LinearLayoutManager(MainActivity.this);linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);r1.setLayoutManager(linearLayoutManager);requestDate();s1.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { @Override public void onRefresh() {new Handler().postDelayed(new Runnable() { @Override public void run() {requestDate(); }},1000); }});

(8)源代碼點擊下載

到此這篇關于Android 使用RecycleView列表實現加載更多的文章就介紹到這了,更多相關Android加載更多內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Android
相關文章:
主站蜘蛛池模板: 草草伊人| a毛片在线看片免费 | 久久精品一区二区免费看 | 亚洲高清一区二区三区 | 欧美三级aaa | 中文字幕人成乱码在线观看 | 成人国产第一区在线观看 | 亚洲国产天堂在线网址 | 欧美一级毛片不卡免费观看 | 亚洲自拍另类 | 精品国产免费一区二区三区 | 欧美另类视频在线 | 久久精品国产6699国产精 | 日韩一区在线播放 | 99久久精品免费看国产一区二区三区 | 黄色美女一级片 | 91久久精品国产91久久性色tv | 欧美另类videosgrstv变态 欧美另类高清xxxxx | 玖玖在线国产精品 | 国产免费久久 | 国产喷水女王在线播放 | 国产美女精品视频免费观看 | 国产精品变态重口在线 | 国产三级在线免费观看 | 国产精品自在自线亚洲 | 欧美一级片 在线播放 | 中文字幕在线看 | 国产精品天天爽夜夜欢张柏芝 | 国产在线精品一区二区三区不卡 | 97超级碰碰碰免费公开在线观看 | 日本高清视频在线观看 | 在线看片 在线播放 | 模特精品一区二区三区 | 波多野结衣视频在线观看 | 99在线热视频只有精品免费 | 91久久国产成人免费观看资源 | 欧美巨乳在线 | 国产国语对白一级毛片 | 国产精品久久久99 | 欧美激情精品久久久久久久久久 | 欧美一级毛片欧美一级 |