RecycleView简单应用以及上拉刷新
2017-12-10 19:35
218 查看
布局
主方法
Adapter
<LinearLayout android:orientation="vertical" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.dell_pc.day12_8recyclerview.MainActivity"> <android.support.v4.widget.SwipeRefreshLayout android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/swipe" > <android.support.v7.widget.RecyclerView android:id="@+id/recyclerView_one" android:layout_width="match_parent" android:layout_height="match_parent" android:scrollbars="vertical" /> </android.support.v4.widget.SwipeRefreshLayout> </LinearLayout>
主方法
public class MainActivity extends AppCompatActivity { private RecyclerView recyclerView_one; private LinearLayoutManager mLayoutManager; private RecyclerView.Adapter mAdapter; private List<MyData> myData = new ArrayList<>(); private SwipeRefreshLayout swipe; private boolean isLoading = false; private int page = 1; private String str = "http://www.qubaobei.com/ios/cf/dish_list.php?stage_id=1&limit=20&page="; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); recyclerView_one = findViewById(R.id.recyclerView_one); swipe = (SwipeRefreshLayout) findViewById(R.id.swipe); // initView(); initData(page); setEnter(); //设置固定大小 recyclerView_one.setHasFixedSize(true); //创建线性布局 mLayoutManager = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false); //给RecyclerView设置布局管理器 recyclerView_one.setLayoutManager(mLayoutManager); mAdapter = new TestRecyclerAdapter(MainActivity.this, myData); recyclerView_one.setAdapter(mAdapter); } private void initData(int page) { x.http().get(new RequestParams(str + page), new Callback.CommonCallback<String>() { @Override public void onSuccess(String s) { try { 4000 JSONObject jsonObject = new JSONObject(s); JSONArray data = jsonObject.getJSONArray("data"); for (int i = 0; i < data.length(); i++) { JSONObject jsonObject1 = data.getJSONObject(i); String title = jsonObject1.getString("title"); String pic = jsonObject1.getString("pic"); myData.add(new MyData(title, pic)); } mAdapter.notifyDataSetChanged(); } catch (JSONException e) { e.printStackTrace(); } } @Override public void onError(Throwable throwable, boolean b) {} @Override public void onCancelled(CancelledException e) {} @Override public void onFinished() {} }); } private void setEnter() { swipe.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { @Override public void onRefresh() { myData.clear(); page++; initData(page); mAdapter.notifyDataSetChanged(); swipe.setRefreshing(false); } }); recyclerView_one.setOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrollStateChanged(RecyclerView recyclerView, int newState) { super.onScrollStateChanged(recyclerView, newState); } @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { super.onScrolled(recyclerView, dx, dy); int lastPosition = mLayoutManager.findLastVisibleItemPosition(); if (lastPosition+1 == mAdapter.getItemCount()){ if (isLoading){ return; }else { isLoading = true; initData(page); } } } }); } }
Adapter
class TestRecyclerAdapter extends RecyclerView.Adapter<TestRecyclerAdapter.ViewHolder>{ private Context context; private List<MyData> list; private LayoutInflater mInflater; public TestRecyclerAdapter(Context context, List<MyData> list) { this.context = context; this.list = list; mInflater = LayoutInflater.from(context); } /** * item显示类型 * @param parent * @param viewType * @return */ @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view=mInflater.inflate(R.layout.view_rv_item,parent,false); //view.setBackgroundColor(Color.RED); ViewHolder viewHolder=new ViewHolder(view); return viewHolder; } /** * 数据的绑定显示 * @param holder * @param position */ @Override public void onBindViewHolder(ViewHolder holder, int position) { holder.textView.setText(list.get(position).getTitle()); Glide.with(context).load(list.get(position).getPic()).apply(new RequestOptions().circleCrop()).into(holder.imageView); } @Override public int getItemCount() { return list.size(); } //自定义的ViewHolder,持有每个Item的的所有界面元素 public static class ViewHolder extends RecyclerView.ViewHolder { public TextView textView; public ImageView imageView; @SuppressLint("WrongViewCast") public ViewHolder(View view){ super(view); textView = view.findViewById(R.id.textView); imageView = view.findViewById(R.id.imageView); } } }
相关文章推荐
- Android深入浅出系列之实例应用—简单的手指拖动图片,图片滑来滑去显示应用Gallery和BaseAdapter以及ImageView的使用
- ViewPager以及ViewFlipper的简单应用
- 自定义RecycleView实现下拉刷新和上拉刷新(源码注释)
- 自定义RecycleView实现TV应用上的item焦点获取以及设置当前选中的item居中
- RecycleView的刷新,点击监听以及下划线设置
- 简单通用的适配ViewPager,以及pager中的RecycleView---EasyTabPager
- RecyclerView局部刷新的应用场景简单分析
- Android深入浅出系列之实例应用—简单的手指拖动图片,图片滑来滑去显示应用Gallery和BaseAdapter以及ImageView的使用
- TabLayout,ViewPager(Fragment)的简单应用实例,以及RecyclerView所遭遇的问题
- Android深入浅出系列之实例应用—简单的手指拖动图片,图片滑来滑去显示应用Gallery和BaseAdapter以及ImageView的使用
- 自定义RecycleView实现TV应用上的item焦点获取以及设置当前选中的item居中
- 在FormView控件中嵌套数据绑定控件的问题,以及从一个对象中反射获取属性值的简单办法
- ibatis的简介以及简单的应用实例
- 安卓学习笔记---RecycleView刷新Item时出现闪烁的情况
- javaBean类,以及Sun的java内省机制与apache的BeanUtils框架/工具简单应用
- RecycleView控件的使用(三) 实现上拉加载更多下拉刷新功能
- RecycleView的通用适配器BaseQuickAdapter处理item中子控件的点击事件以及cardview卡片阴影
- RecyclerView的简单使用(不同类型的view以及header、footer)
- android TimerTask 的简单应用,以及java.lang.IllegalStateException: TimerTask is schedule
- [Android新手学习笔记25]-RecylerView简单应用