国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Swiperefreshlayout與Recyclerview下拉刷新和上拉加載

2019-11-09 14:31:20
字體:
來源:轉載
供稿:網友

布局文件

<?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_main2"    android:layout_width="match_parent"    android:layout_height="match_parent"    >    <android.support.v4.widget.SwipeRefreshLayout        android:id="@+id/SwipeRefreshLayout"        android:layout_width="match_parent"        android:layout_height="match_parent">        <android.support.v7.widget.RecyclerView            android:id="@+id/recyclerView"            android:layout_width="match_parent"            android:layout_height="match_parent">        </android.support.v7.widget.RecyclerView>    </android.support.v4.widget.SwipeRefreshLayout></RelativeLayout>MainActivity代碼

package com.example.putorefresh;import android.os.Handler;import android.support.v4.widget.SwipeRefreshLayout;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.support.v7.widget.LinearLayoutManager;import android.support.v7.widget.RecyclerView;import android.util.Log;import android.view.View;import android.widget.Toast;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;public class Main2Activity extends AppCompatActivity {    boolean isLoading;    PRivate List<Map<String, Object>> data = new ArrayList<>();    private MyAdapter adapter = new MyAdapter(this, data);    private Handler handler = new Handler();    private SwipeRefreshLayout swipeRefreshLayout;    private RecyclerView recyclerView;    private int index;    private int lastVisibleItemPosition;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main2);        initView();        initData();    }    private void initView() {        swipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.SwipeRefreshLayout);        recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
	//這里設置刷新控件的樣式顏色	
	swipeRefreshLayout.setColorSchemeResources(R.color.blueStatus);
	//設置第一次進入界面顯示刷新控件        swipeRefreshLayout.post(new Runnable() {            @Override            public void run() {                swipeRefreshLayout.setRefreshing(true);            }        });	//設置下拉刷新監聽         swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {            @Override            public void onRefresh() {
		//模擬請求網絡                handler.postDelayed(new Runnable() {                    @Override                    public void run() {                        data.clear();                        index=0;                        getData();                    }                }, 2000);            }        });        final LinearLayoutManager layoutManager = new LinearLayoutManager(this);        recyclerView.setLayoutManager(layoutManager);        recyclerView.setAdapter(adapter);
	//設置滑動監聽        recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
	//滑動狀態監聽            @Override            public void onScrollStateChanged(RecyclerView recyclerView, int newState) {                super.onScrollStateChanged(recyclerView, newState);                Log.d("test", "StateChanged = " + newState);                if (newState == RecyclerView.SCROLL_STATE_IDLE && lastVisibleItemPosition + 1 == adapter.getItemCount()) {                    Log.d("test", "loading executed");                    boolean isRefreshing = swipeRefreshLayout.isRefreshing();                    if (isRefreshing) {                        adapter.notifyItemRemoved(adapter.getItemCount());                        return;                    }                    if (!isLoading) {                        isLoading = true;                        handler.postDelayed(new Runnable() {                            @Override                            public void run() {                                isLoading = false;                                getData();                                Log.d("test", "load more completed");                            }                        }, 1000);                    }else{                        adapter.notifyItemRemoved(adapter.getItemCount());                        return;                    }                }            }	//滑動監聽            @Override            public void onScrolled(RecyclerView recyclerView, int dx, int dy) {                super.onScrolled(recyclerView, dx, dy);                Log.d("test", "onScrolled");		//最后可見的item的位置(0,1....adapter.getCount()-1)                lastVisibleItemPosition = layoutManager.findLastVisibleItemPosition();                /*if (lastVisibleItemPosition + 1 == adapter.getItemCount()) {                    Log.d("test", "loading executed");                    boolean isRefreshing = swipeRefreshLayout.isRefreshing();                    if (isRefreshing) {                        adapter.notifyItemRemoved(adapter.getItemCount());                        return;                    }                    if (!isLoading) {                        isLoading = true;                        handler.postDelayed(new Runnable() {                            @Override                            public void run() {                                getData();                                Log.d("test", "load more completed");                                isLoading = false;                            }                        }, 1000);                    }                }*/            }        });        //添加點擊事件        adapter.setOnItemClickListener(new MyAdapter.OnItemClickListener() {            @Override            public void onItemClick(View view, int position) {                Log.d("test", "item position = " + position);            }            @Override            public void onItemLongClick(View view, int position) {            }        });    }    public void initData() {        handler.postDelayed(new Runnable() {            @Override            public void run() {                getData();            }        }, 1500);    }    /**     * 獲取測試數據     */    private void getData() {        index++;        if(index>3){            Toast.makeText(Main2Activity.this,"沒有更多數據!",Toast.LENGTH_SHORT).show();//            adapter.notifyDataSetChanged();//            recyclerView.smoothScrollToPosition(adapter.getItemCount());            swipeRefreshLayout.setRefreshing(false);            adapter.notifyItemRemoved(adapter.getItemCount());            isLoading = true;            return;        }else{            for (int i = 0; i < 6; i++) {                Map<String, Object> map = new HashMap<>();                data.add(map);            }        }        adapter.notifyDataSetChanged();        swipeRefreshLayout.setRefreshing(false);        adapter.notifyItemRemoved(adapter.getItemCount());    }}Adapter代碼

package com.example.putorefresh;import android.content.Context;import android.support.v7.widget.RecyclerView;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.TextView;import java.util.List;/** * Created by Dell on 2017/2/8. */public class MyAdapter  extends RecyclerView.Adapter<RecyclerView.ViewHolder> {    private static final int TYPE_ITEM = 0;    private static final int TYPE_FOOTER = 1;    private Context context;    private List data;    public interface OnItemClickListener {        void onItemClick(View view, int position);        void onItemLongClick(View view, int position);    }    private OnItemClickListener onItemClickListener;    public void setOnItemClickListener(OnItemClickListener onItemClickListener) {        this.onItemClickListener = onItemClickListener;    }    @Override    public int getItemCount() {        return data.size() == 0 ? 0 : data.size() + 1;    }    @Override    public int getItemViewType(int position) {        if (position + 1 == getItemCount()) {            return TYPE_FOOTER;        } else {            return TYPE_ITEM;        }    }    public MyAdapter(Context context, List data) {        this.context = context;        this.data = data;    }    @Override    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {        if (viewType == TYPE_ITEM) {            View view = LayoutInflater.from(context).inflate(R.layout.item_notice, parent,                    false);            return new ItemViewHolder(view);        } else if (viewType == TYPE_FOOTER) {            View view = LayoutInflater.from(context).inflate(R.layout.item_foot, parent,                    false);            return new FootViewHolder(view);        }        return null;    }    @Override    public void onBindViewHolder(final RecyclerView.ViewHolder holder, int position) {        if (holder instanceof ItemViewHolder) {            //holder.tv.setText(data.get(position));            if (onItemClickListener != null) {                holder.itemView.setOnClickListener(new View.OnClickListener() {                    @Override                    public void onClick(View v) {                        int position = holder.getLayoutPosition();                        onItemClickListener.onItemClick(holder.itemView, position);                    }                });                holder.itemView.setOnLongClickListener(new View.OnLongClickListener() {                    @Override                    public boolean onLongClick(View v) {                        int position = holder.getLayoutPosition();                        onItemClickListener.onItemLongClick(holder.itemView, position);                        return false;                    }                });            }        }    }    static class ItemViewHolder extends RecyclerView.ViewHolder {        TextView tv;        public ItemViewHolder(View view) {            super(view);            tv = (TextView) view.findViewById(R.id.tv_date);        }    }    static class FootViewHolder extends RecyclerView.ViewHolder {        public FootViewHolder(View view) {            super(view);        }    }}腳布局

<?xml version="1.0" encoding="utf-8"?><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="40dp"    android:gravity="center"    android:orientation="horizontal"    >    <ProgressBar        android:layout_marginRight="6dp"        android:id="@+id/progressBar"        style="?android:attr/progressBarStyleSmall"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_gravity="center" />    <TextView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_gravity="center"        android:text="加載中" /></LinearLayout>


上一篇:二維碼生成

下一篇:Palette調色板的使用

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 盐边县| 元阳县| 衡阳县| 台中县| 新邵县| 信宜市| 屯昌县| 海兴县| 新田县| 遂昌县| 长乐市| 米泉市| 绥棱县| 杭州市| 芦山县| 平远县| 阳信县| 肥西县| 马边| 阜阳市| 当雄县| 千阳县| 林西县| 花垣县| 板桥市| 界首市| 万荣县| 开化县| 阳谷县| 广宁县| 宝应县| 双牌县| 望都县| 门头沟区| 慈溪市| 萨迦县| 乾安县| 辰溪县| 梅州市| 渑池县| 梅州市|