RecyclerView上拉刷新,下拉加载
来源:互联网 发布:党章党规面前知敬畏 编辑:程序博客网 时间:2024/05/23 01:18
compile 'com.android.support:recyclerview-v7:25.3.1'
activity_main.xml
<android.support.v4.widget.SwipeRefreshLayout android:id="@+id/swipe_refresh_widget" 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>
home_item.xml
<ImageView android:id="@+id/imageView" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" />
public class RecyleAdapter extends RecyclerView.Adapter { private Context mcontext; private List<FragBean.ResultBean.DataBean> list = new ArrayList<>(); private FragBean mHomePresenter; public RecyleAdapter(Context context) { this.mcontext = context; } public void setPresenter(FragBean presenter) { this.mHomePresenter = presenter; } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = View.inflate(mcontext, R.layout.home_item, null); MyViewHolder myViewHolder = new MyViewHolder(view); return myViewHolder; } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { MyViewHolder myViewHolder = (MyViewHolder) holder; myViewHolder.textView.setText(list.get(position).getTitle()); getiamgeforServer(myViewHolder.imageView, list.get(position).getThumbnail_pic_s()); } @Override public int getItemCount() { return list.size(); } public void setData(List<FragBean.ResultBean.DataBean> data) { if (data != null) { list.addAll(data); } } public void getiamgeforServer(ImageView imageView, String url) { x.image().bind(imageView, url); } class MyViewHolder extends RecyclerView.ViewHolder { private final TextView textView; private final ImageView imageView; public MyViewHolder(View itemView) { super(itemView); textView = (TextView) itemView.findViewById(R.id.textView); imageView = (ImageView) itemView.findViewById(R.id.imageView); } private void initListener(View itemView) { imageView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(mcontext, "poistion " + getAdapterPosition(), Toast.LENGTH_SHORT).show(); } }); } } public void AddHeaderItem(List<FragBean.ResultBean.DataBean> list) { this.list.addAll(0, list); notifyDataSetChanged(); } public void AddFootItem(List<FragBean.ResultBean.DataBean> list) { this.list.addAll(list); notifyDataSetChanged(); }}
private RecyclerView recyclerView; private HashMap<String, String> hashMap = new HashMap<>(); private String url = "http://result.eolinker.com/k2BaduF2a6caa275f395919a66ab1dfe4b584cc60685573?uri=gj"; private FragBean fragBean; private RecyleAdapter adapter; private GridLayoutManager gridLayoutManager; private SwipeRefreshLayout mSwipeRefreshWidget; @RequiresApi(api = Build.VERSION_CODES.M) @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); recyclerView = (RecyclerView) findViewById(R.id.recyclerView); mSwipeRefreshWidget = (SwipeRefreshLayout) findViewById(R.id.swipe_refresh_widget); recyclerView.addItemDecoration(new MyRecyclerView(MainActivity.this)); mSwipeRefreshWidget.setColorSchemeColors(Color.BLUE, Color.BLACK, Color.RED, Color.YELLOW); // 这句话是为了,第一次进入页面的时候显示加载进度条// mSwipeRefreshWidget.setProgressViewOffset(false, 0, (int) TypedValue// .applyDimension(TypedValue.COMPLEX_UNIT_DIP, 24, getResources()// .getDisplayMetrics()));// mSwipeRefreshWidget.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {// @Override// public void onRefresh() {//// }// }); initHttp(); initHttpT(); } private void initHttpT() { //创建适配器 adapter = new RecyleAdapter(this); gridLayoutManager = new GridLayoutManager(this, 3); int a = 3; StaggeredGridLayoutManager staggeredGridLayoutManager = new StaggeredGridLayoutManager(a, StaggeredGridLayoutManager.VERTICAL); recyclerView.setLayoutManager(gridLayoutManager); } private void initHttp() { RequestParams params = new RequestParams(); params.setUri(url); if (hashMap != null) { Iterator<String> iterator = hashMap.keySet().iterator(); while (iterator.hasNext()) { String key = iterator.next(); String value = hashMap.get(key); params.addQueryStringParameter(key, value); } } x.http().get(params, new Callback.CommonCallback<String>() { @Override public void onSuccess(String result) { System.out.println("123123" + result); Gson gson = new Gson(); fragBean = gson.fromJson(result, FragBean.class); adapter.setPresenter(fragBean); adapter.setData(fragBean.getResult().getData()); recyclerView.setAdapter(adapter); initPullRefresh(); initLoadMoreListener(); } @Override public void onError(Throwable ex, boolean isOnCallback) { } @Override public void onCancelled(CancelledException cex) { } @Override public void onFinished() { } }); } private void initPullRefresh() { mSwipeRefreshWidget.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { @Override public void onRefresh() { new Handler().postDelayed(new Runnable() { @Override public void run() {// List<String> headDatas = new ArrayList<String>();// for (int i = 20; i <30 ; i++) {//// headDatas.add("Heard Item "+i);// } List<FragBean.ResultBean.DataBean> data = fragBean.getResult().getData(); adapter.AddHeaderItem(data); //刷新完成 mSwipeRefreshWidget.setRefreshing(false); Toast.makeText(MainActivity.this, "更新了 " + data.size() + " 条目数据", Toast.LENGTH_SHORT).show(); } }, 3000); } }); } private void initLoadMoreListener() { recyclerView.setOnScrollListener(new RecyclerView.OnScrollListener() { int lastVisibleItem; @Override public void onScrollStateChanged(RecyclerView recyclerView, int newState) { super.onScrollStateChanged(recyclerView, newState); if (newState == RecyclerView.SCROLL_STATE_IDLE && lastVisibleItem + 1 == adapter.getItemCount()) { new Handler().postDelayed(new Runnable() { @Override public void run() {// List<String> headDatas = new ArrayList<String>();// for (int i = 20; i <30 ; i++) {//// headDatas.add("Heard Item "+i);// } List<FragBean.ResultBean.DataBean> data = fragBean.getResult().getData(); adapter.AddFootItem(data); Toast.makeText(MainActivity.this, "更新了 " + data.size() + " 条目数据", Toast.LENGTH_SHORT).show(); } }, 3000); } } @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { super.onScrolled(recyclerView, dx, dy); GridLayoutManager layoutManager = (GridLayoutManager) recyclerView.getLayoutManager(); //最后一个可见的ITEM lastVisibleItem = layoutManager.findLastVisibleItemPosition(); } }); }
阅读全文
0 0
- RecyclerView实现上拉加载,下拉刷新
- RecyclerView 下拉刷新上拉加载更多
- RecyclerView实现上拉加载,下拉刷新
- RecyclerView 下拉刷新上拉加载更多
- RecyclerView的上拉加载,下拉刷新
- RecyclerView 下拉刷新和上拉加载
- RecyclerView下拉刷新上拉加载
- RecyclerView下拉刷新上拉加载
- RecyclerView下拉刷新上拉加载
- RecyclerView 下拉刷新、上拉加载更多
- RecyclerView 下拉刷新上拉加载更多
- recyclerView上拉加载,下拉刷新
- RecyclerView上拉刷新,下拉加载更多
- Recyclerview上拉加载下拉刷新
- RecyclerView 下拉刷新上拉加载更多
- RecyclerView上拉刷新,下拉加载
- RecyclerView上拉刷新下拉加载
- RecyclerView 下拉刷新 上拉加载
- 使用@property
- 数据库外键的使用
- (一)STL之list
- Linux操作系统下/etc/hosts文件详解
- The JSP specification requires that an attribute name is preceded by whitespace
- RecyclerView上拉刷新,下拉加载
- C#使用DataSet Datatable更新数据库的三种实现方法
- POJ 3516 数学期望 解题报告
- 四边形不等式优化讲解(详解)
- 详解Docker挂载本地目录及实现文件共享
- 公益404页面
- [李景山php] C语言 指针---1
- Sqlserver日期函数dateadd和datediff
- Xshell介绍