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
- RecyclerView及SwipeRefreshLayout的使用
- RecyclerView和SwipeRefreshLayout的使用
- 解决Android SwipeRefreshLayout & RecyclerView使用的Bug
- RecyclerView,SwipeRefreshLayout,CardView最新控件的使用
- 解决Android SwipeRefreshLayout & RecyclerView使用的Bug
- SwipeRefreshLayout和RecyclerView使用的小问题
- SwipeRefreshLayout和RecyclerView的结合使用
- SwipeRefreshLayout和RecyclerView的配合使用
- RecyclerView+SwipeRefreshLayout使用细节
- SwipeRefreshLayout 与RecyclerView 使用
- SwipeRefreshLayout、ScrollView、RecyclerView嵌套使用
- 关于SwipeRefreshLayout和RecyclerView混合使用的代码示例
- RecyclerView添加头脚布局,使用SwipeRefreshLayout的实现
- SwipeRefreshLayout与RecyclerView的巧夺天工
- 搭配SwipeRefreshLayout的Recyclerview刷新
- RecyclerView+SwipeRefreshLayout两个控件同时使用
- Android使用RecyclerView+SwipeRefreshLayout进行拉下刷新
- recyclerview 和SwipeRefreshLayout组合出现的问题
- android CoordinatorLayout使用
- 给“习得性无助”者的回信
- 【南理oj】93 - 汉诺塔(三)(栈)
- 杭电2091之空心三角形
- meta
- RecyclerView及SwipeRefreshLayout的使用
- 单例模式
- Ubuntu 14.04 安装录音软件Audacity
- Java虚拟机(JVM)以及跨平台原理
- 装了win10 Ubuntu双系统 却只能进Ubuntu 没有启动选择操作系统的菜单!
- 第16周项目1--小玩文件(1)
- 资源共享问题
- Android处理输入事件的流程(一)
- POJ 2184 Cow Exhibition