mainActivity
/*
* RecyclerView的使用:1,添加依赖,RecyclerView的依赖版本号必须跟你SDK的版本号保持一致;
implementation files('libs/uk-co-senab-photoview.jar')
compile 'com.github.bumptech.glide:glide:3.7.0'
compile 'com.android.support:recyclerview-v7:26.1.0'
* 3,创建adapter适配器;{
* 1,首先创建对应item的布局文件;
* 2,创建对应布局文件的viewholder,继成RecyclerView.ViewHolder
* 3,创建adapter类,继承RecyclerView.Adapter<自定义的ViewHolder>,重写三个方法
* }
* 4,讲adapter设置给RecyclerView
*5,为recyclerView设置布局管理器,数据才能正常显示
* 6,为recyclerView设置条目点击事件{
* 1,自定义一个接口,将点击响应的方法写到接口里;
* 2,在adapter里定义一个public的方法,用来设置接口
* 3,在activity中,使用adapter的实例去调用该方法,重新接口内的点击响应方法;
* 4,在adapter里设置点击事件,调用点击接口内的方法
* }
*
* */
public class MainActivity extends AppCompatActivity {
private RecyclerView recyclerView;
private MyAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
PhotoView view = (PhotoView) findViewById(R.id.myphoto);
Glide.with(MainActivity.this).load("http://pic40.nipic.com/20140412/11857649_170524977000_2.jpg").into(view);
recyclerView = (RecyclerView) findViewById(R.id.myview);
List<String> list = new ArrayList<>();
for (int i = 0; i < 10; i++) {
list.add(i + "ddddd");
}
adapter = new MyAdapter(list, MainActivity.this);
recyclerView.setAdapter(adapter);
//设置布局管理器
recyclerView.setLayoutManager(new LinearLayoutManager(MainActivity.this));
//设置条目点击事件
adapter.setLinstner(new OnItemClickListner() {
@Override
public void onitemClick(View itemView, int position) {
System.out.println(position);
}
});
}
}
adapter
public class MyAdapter extends RecyclerView.Adapter<MyViewHolder> {
private List<String> list = new ArrayList<>();
private Context context;
//构造方法
public MyAdapter(List<String> list, Context context) {
this.list = list;
this.context = context;
}
//第一步,创建viewholder实例,(listview的convertview+findviewbyid的操作)
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View convertview = LayoutInflater.from(context).inflate(R.layout.item, parent, false);
final MyViewHolder holder = new MyViewHolder(convertview);
convertview.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
listner.onitemClick(v,holder.getLayoutPosition());
}
});
return holder;
}
//给item里的所有view设置数据;
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
holder.textView.setText(list.get(position));
}
//返回item数量
@Override
public int getItemCount() {
return list.size();
}
private OnItemClickListner listner;
//设置条目点击监听事件
public void setLinstner(OnItemClickListner linstner) {
this.listner = linstner;
}
}
MyViewHolder
/**
* Created by mamiaomiao on 2018/3/2.
* itemView相当于listview里的convertview
*/
public class MyViewHolder extends RecyclerView.ViewHolder {
public TextView textView;
public MyViewHolder(View itemView) {
super(itemView);
textView=(TextView)itemView.findViewById(R.id.mytext);
}
}
/**
* Created by mamiaomiao on 2018/3/2.
* 条目点击的接口
*/
OnitemClickListner
public interface OnItemClickListner {
void onitemClick(View itemView,int position);
}