recyclerview依赖:
compile 'com.android.support:recyclerview-v7:25.0.0'
加载图片的依赖
compile 'com.github.bumptech.glide:glide:3.7.0'
布局文件
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <android.support.v7.widget.RecyclerView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/recy" ></android.support.v7.widget.RecyclerView> </RelativeLayout>Activity代码
package com.example.recyclerviewactivity; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.View; import android.widget.Toast; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity { private List<User> list = new ArrayList<>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //模拟数据 initData(); RecyclerView recy = (RecyclerView) findViewById(R.id.recy); // 线性布局管理器,第二个参数默认是LinearLayoutManager.VERTICAL,第三个参数默认是false LinearLayoutManager manager = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false); // 网格布局 // GridLayoutManager manager = new GridLayoutManager(this, 2); // 瀑布流 // StaggeredGridLayoutManager manager = new StaggeredGridLayoutManager(3, LinearLayoutManager.VERTICAL); // rvData.setLayoutManager(manager); recy.setLayoutManager(manager); MyAdapter myAdapter = new MyAdapter(list, MainActivity.this); recy.setAdapter(myAdapter); //点击事件 myAdapter.setOnRecycleViewListener(new MyAdapter.OnRecycleViewListener() { @Override public void onItemClick(View view, int postion) { Toast.makeText(MainActivity.this,"点击了"+postion,Toast.LENGTH_SHORT).show(); } }); } private void initData() { User user1 = new User("http://120.27.23.105/images/ad/0.jpg", "花生油"); User user2 =new User("http://120.27.23.105/images/ad/1.jpg","京东女人节"); User user3 =new User("http://120.27.23.105/images/ad/2.jpg","国庆大惠战"); User user4 = new User("http://120.27.23.105/images/ad/3.jpg","北京稻香村"); list.add(user1); list.add(user2); list.add(user3); list.add(user4); } }Adapter适配器代码
package com.example.recyclerviewactivity; import android.content.Context; import android.support.v7.widget.RecyclerView; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import com.bumptech.glide.Glide; import com.nostra13.universalimageloader.core.ImageLoader; import java.util.List; /** * Created by xsj on 2017/11/9. * 封装类 */ public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> { private List<User> list ; private Context context; public MyAdapter(List<User> list, Context context) { this.list = list; this.context = context; } //定义一个接口 public interface OnRecycleViewListener{ void onItemClick(View view,int postion);//单击事件 } //封装私有变量 private OnRecycleViewListener onRecycleViewListener; public void setOnRecycleViewListener(OnRecycleViewListener onItemClickListen){ this.onRecycleViewListener = onItemClickListen; } //** 创建ViewHolder的时候 @Override public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = View.inflate(context, R.layout.recy_items, null); ViewHolder holder = new ViewHolder(view); return holder; } // 绑定ViewHolder,实际上是把数据和视图进行绑定 @Override public void onBindViewHolder(final ViewHolder holder, final int position) { //图片加载 Glide.with(context).load(list.get(position).getIv()).into(holder.imgLogo); holder.txtTitle.setText(list.get(position).getIm()); if(onRecycleViewListener!=null){//设置回调 holder.txtTitle.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //获得下标 int adapterPosition = holder.getAdapterPosition(); onRecycleViewListener.onItemClick(holder.itemView,position); } }); } } @Override public int getItemCount() { return list.size(); } //优化extends RecyclerView.ViewHolder class ViewHolder extends RecyclerView.ViewHolder{ private ImageView imgLogo; private TextView txtTitle; public ViewHolder(View itemView) { super(itemView); imgLogo = (ImageView) itemView.findViewById(R.id.re_im); txtTitle = (TextView) itemView.findViewById(R.id.re_tv); } } }