RecyclerView及SwipeRefreshLayout的使用

来源:互联网 发布:韩国购物软件 编辑:程序博客网 时间:2024/05/16 07:09

布局

<android.support.v4.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:id="@+id/swipe_refresh_widget"    android:layout_width="match_parent"    android:layout_height="match_parent">    <android.support.v7.widget.RecyclerView        android:id="@android:id/list"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:cacheColorHint="@null"        android:scrollbars="vertical" /></android.support.v4.widget.SwipeRefreshLayout>

Adapter

public class SampleAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {    private static final int TYPE_ITEM = 0;    private static final int TYPE_FOOTER = 1;    private final List<Integer> list;    public SampleAdapter() {        list = new ArrayList<Integer>();    }    public List<Integer> getList() {        return list;    }    // RecyclerView的count设置为数据总条数+ 1(footerView)    @Override    public int getItemCount() {        return list.size() + 1;    }    @Override    public int getItemViewType(int position) {        // 最后一个item设置为footerView        if (position + 1 == getItemCount()) {            return TYPE_FOOTER;        } else {            return TYPE_ITEM;        }    }    @Override    public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) {        if (holder instanceof ItemViewHolder) {            ((ItemViewHolder) holder).textView.setText(String.valueOf(list                    .get(position)));        }    }    @Override    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {        if (viewType == TYPE_ITEM) {            View view = LayoutInflater.from(parent.getContext()).inflate(                    R.layout.list_item_text, null);            view.setLayoutParams(new RecyclerView.LayoutParams(RecyclerView.LayoutParams.MATCH_PARENT,                    RecyclerView.LayoutParams.WRAP_CONTENT));            return new ItemViewHolder(view);        }        // type == TYPE_FOOTER 返回footerView        else if (viewType == TYPE_FOOTER) {            View view = LayoutInflater.from(parent.getContext()).inflate(                    R.layout.footerview, null);            view.setLayoutParams(new RecyclerView.LayoutParams(RecyclerView.LayoutParams.MATCH_PARENT,                    RecyclerView.LayoutParams.WRAP_CONTENT));            return new FooterViewHolder(view);        }        return null;    }    class FooterViewHolder extends RecyclerView.ViewHolder {        public FooterViewHolder(View view) {            super(view);        }    }    class ItemViewHolder extends RecyclerView.ViewHolder {        TextView textView;        public ItemViewHolder(View view) {            super(view);            textView = (TextView) view.findViewById(R.id.text);        }    }}

Activity

public class MainActivity extends AppCompatActivity implements SwipeRefreshLayout.OnRefreshListener {    SwipeRefreshLayout mSwipeRefreshWidget;    RecyclerView mRecyclerView;    LinearLayoutManager mLayoutManager;    SampleAdapter adapter;    Handler handler = new Handler() {        @Override        public void handleMessage(Message msg) {            for (int i = 0; i < 10; i++) {                adapter.getList().add(adapter.getList().size() + 1);            }            adapter.notifyDataSetChanged();            mSwipeRefreshWidget.setRefreshing(false);        }    };    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        mSwipeRefreshWidget = (SwipeRefreshLayout) findViewById(R.id.swipe_refresh_widget);        mRecyclerView = (RecyclerView) findViewById(android.R.id.list);        mSwipeRefreshWidget.setColorSchemeResources(android.R.color.holo_red_light,                android.R.color.holo_blue_light                , android.R.color.holo_orange_light);        mSwipeRefreshWidget.setOnRefreshListener(this);        // 这句话是为了,第一次进入页面的时候显示加载进度条        mSwipeRefreshWidget.setProgressViewOffset(false, 0, (int) TypedValue                .applyDimension(TypedValue.COMPLEX_UNIT_DIP, 24, getResources()                        .getDisplayMetrics()));        mRecyclerView.setOnScrollListener(new RecyclerView.OnScrollListener() {            @Override            public void onScrollStateChanged(RecyclerView recyclerView,                                             int newState) {                super.onScrollStateChanged(recyclerView, newState);                if (newState == RecyclerView.SCROLL_STATE_IDLE                        && mLayoutManager.findLastCompletelyVisibleItemPosition() + 1 == adapter.getItemCount()                        && mLayoutManager.findFirstCompletelyVisibleItemPosition() != 0) {                    Toast.makeText(MainActivity.this, "加载更多", Toast.LENGTH_SHORT).show();                    loadingMore();                }            }        });//        mRecyclerView.setHasFixedSize(true);        mLayoutManager = new LinearLayoutManager(this);        mRecyclerView.setLayoutManager(mLayoutManager);        mRecyclerView.setItemAnimator(new DefaultItemAnimator());        adapter = new SampleAdapter();        mRecyclerView.setAdapter(adapter);    }    //下拉刷新    @Override    public void onRefresh() {        handler.sendEmptyMessageDelayed(0, 3000);    }    public void loadingMore() {        handler.sendEmptyMessageDelayed(0, 3000);    }}
0 0
原创粉丝点击