main布局
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="demo.song.com.myweek2.MainActivity"> <android.support.v7.widget.RecyclerView android:id="@+id/myRecyclerView" android:layout_width="match_parent" android:layout_height="match_parent"/> </RelativeLayout>
item布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:orientation="vertical" android:layout_height="wrap_content"> <TextView android:id="@+id/two_font" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_horizontal" android:background="#ff6677" android:text="春风"/> <ImageView android:id="@+id/two_img" android:layout_width="match_parent" android:layout_height="120dp" android:scaleType="fitXY"/> </LinearLayout>main代码public class MainActivity extends AppCompatActivity { private RecyclerView recyclerView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initview(); checkNetworkState(); recyclerView.setLayoutManager(new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL)); recyclerView.setOnScrollListener(new RecyclerView.OnScrollListener() { StaggeredGridLayoutManager manager = (StaggeredGridLayoutManager) recyclerView.getLayoutManager(); boolean isSlidingToLast = false; @Override public void onScrollStateChanged(RecyclerView recyclerView, int newState) { super.onScrollStateChanged(recyclerView, newState); if (newState == RecyclerView.SCROLL_STATE_IDLE){ //获取最后一个完全显示的ItemPosition int[] lastVisiblePositions = manager.findLastVisibleItemPositions(new int[manager.getSpanCount()]); int lastVisiblePos = getMaxElem(lastVisiblePositions); int totalItemCount = manager.getItemCount(); // 判断是否滚动到底部 if (lastVisiblePos == (totalItemCount -1) && isSlidingToLast) { //加载更多功能的代码 gsonToNet(); // Ln.e("howes right="+manager.findLastCompletelyVisibleItemPosition()); // Toast.makeText(MainActivity.this,"加载更多",0).show(); } } } @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { super.onScrolled(recyclerView, dx, dy); //dx用来判断横向滑动方向,dy用来判断纵向滑动方向 if(dy > 0){ //大于0表示,正在向下滚动 isSlidingToLast = true; }else{ //小于等于0 表示停止或向上滚动 isSlidingToLast = false; } } }); } private void gsonToNet() { OkHttpUtils.get() .url("http://c.3g.163.com/recommend/getChanListNews?channel=T1456112189138&size=20&passport=&devId=1uuFYbybIU2oqSRGyFrjCw%3D%3D&lat=%2F%2FOm%2B%2F8ScD%2B9fX1D8bxYWg%3D%3D&lon=LY2l8sFCNzaGzqWEPPgmUw%3D%3D&version=9.0&net=wifi&ts=1464769308&sign=bOVsnQQ6gJamli6%2BfINh6fC%2Fi9ydsM5XXPKOGRto5G948ErR02zJ6%2FKXOnxX046I&encryption=1&canal=meizu_store2014_news&mac=sSduRYcChdp%2BBL1a9Xa%2F9TC0ruPUyXM4Jwce4E9oM30%3D") .build() .execute(new StringCallback() { @Override public void onError(Call call, Exception e, int id) { } @Override public void onResponse(String response, int id) { String string = response.toString(); Toast.makeText(MainActivity.this,string,Toast.LENGTH_SHORT).show(); Gson gson = new Gson(); MyBean myBean = gson.fromJson(string, MyBean.class); List<MyBean.美女Bean> 美女 = myBean.get美女(); MyAdapter adapter = new MyAdapter(美女,MainActivity.this); recyclerView.setAdapter(adapter); } }); } private boolean checkNetworkState() { boolean net = false; //得到网络连接信息 ConnectivityManager manager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); //去进行判断网络是否连接 if (manager.getActiveNetworkInfo() != null) { net= manager.getActiveNetworkInfo().isAvailable(); } if (!net) { setNetWork();//网络没连接调用的方法 gsonToNet(); } else { gsonToNet(); } return net; } private void setNetWork() { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("网络提示信息"); builder.setMessage("网络不可用,如果继续,请先设置网络!"); builder.setPositiveButton("设置", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i){ Intent intent = null; //Android系统的网络设置 intent = new Intent(Settings.ACTION_WIFI_SETTINGS); startActivity(intent); } }); builder.setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }); builder.create();//创建并且展示,很重要,不要忘记填了 builder.show(); } private void initview() { recyclerView = (RecyclerView) findViewById(R.id.myRecyclerView); } private int getMaxElem(int[] arr) { int size = arr.length; int maxVal = Integer.MIN_VALUE; for (int i = 0; i < size; i++) { if (arr[i]>maxVal) maxVal = arr[i]; } return maxVal; } }适配器
public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>{ List<MyBean.美女Bean> list; Context context; public MyAdapter(List<MyBean.美女Bean> list,Context context) { this.list = list; this.context = context; } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view1 = LayoutInflater.from(parent.getContext()).inflate(R.layout.item02, parent, false); MyViewHolder holder1 = new MyViewHolder(view1); return holder1; } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { if (holder instanceof MyViewHolder){ // 添加属性动画 ObjectAnimator animator = ObjectAnimator.ofFloat(((MyViewHolder) holder).image, "alpha", 0.3f, 1f); animator.setDuration(3000); animator.start(); MyViewHolder my= (MyViewHolder) holder; my.textView.setText(list.get(position).getTitle()); loderImage(list.get(position).getImg(),context,my.image); } } @Override public int getItemCount() { return list.size(); } //写一个方法 public MyBean.美女Bean getItem(int position) { return list.get(position); } static class MyViewHolder extends RecyclerView.ViewHolder{ TextView textView; ImageView image; public MyViewHolder(View itemView) { super(itemView); textView = (TextView) itemView.findViewById(R.id.two_font); image = (ImageView) itemView.findViewById(R.id.two_img); } } public void loderImage(String url, Context context, ImageView imageView){ ImageLoaderConfiguration configuration = ImageLoaderConfiguration .createDefault(context); // String path = Environment.getExternalStorageDirectory().getPath()+"/"+"Pictrues"; // File file = new File(path); // // ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(getActivity()) // .diskCache(new UnlimitedDiskCache(file))//UnlimitedDiskCache 限制这个图片的缓存路径 // .memoryCacheSize(2 * 1024 * 1024)//配置内存缓存的大小 例如 : 2* 1024 * 1024 = 2MB // .build();//配置构建完成 修改缓存位置 DisplayImageOptions options = new DisplayImageOptions.Builder() .showImageOnLoading(R.mipmap.ic_launcher) .showImageOnFail(R.mipmap.ic_launcher) .cacheInMemory(true) .cacheOnDisk(true) .bitmapConfig(Bitmap.Config.RGB_565) .build(); ImageLoader instance = ImageLoader.getInstance(); instance.init(configuration); instance.displayImage(url, imageView ,options); //compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5' } }权限不能忘了(连接网络)
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>