RecyclerView的几种布局方式
来源:互联网 发布:设计队徽用什么软件 编辑:程序博客网 时间:2024/06/06 06:56
RecyclerView是一个非常实用的控件。可以实现listview,GridView所能实现的功能的显示。
这里来说说几种方式的实现:
//得到控件
recy_view = (RecyclerView) findViewById(R.id.recy_view);
//必须要有,默认的(listview的形式)
// recy_view.setLayoutManager(new LinearLayoutManager(this));
//横向(排成一排,不管有多少个,后面有个false和true)
// recy_view.setLayoutManager(new LinearLayoutManager(this,LinearLayoutManager.HORIZONTAL,false));
//九宫格布局(垂直方向上的,4代表个数)
// recy_view.setLayoutManager(new GridLayoutManager(this,4));
//九宫格布局(水平方向上的)
recy_view.setLayoutManager(new GridLayoutManager(this, 4, LinearLayoutManager.HORIZONTAL, false));
下面是一个表示的adapter的写法:
/**
* Author:zzq (Create on 16/6/28)
* Email:272804553@qq.com
*/
public class MyAdapter extends RecyclerView.Adapter implements View.OnClickListener {
private ArrayList<Map<String, Object>> list = new ArrayList<>();
private int[] img_url =null;
public MyAdapter(ArrayList<Map<String, Object>> lists) {
this.list=lists;
img_url=new int[this.list.size()];
for (int i = 0; i < this.list.size(); i++) {
img_url[i]=R.drawable.timo;
}
}
//用于点击事件
private OnRecyclerViewItemClickListener mOnItemClickListener = null;
public void setOnItemClickListener(OnRecyclerViewItemClickListener listener) {
this.mOnItemClickListener = listener;
}
//define interface
public static interface OnRecyclerViewItemClickListener {
void onItemClick(View view , int position);
}
@Override
public void onClick(View view) {
if(mOnItemClickListener!=null){
mOnItemClickListener.onItemClick(view, (Integer) view.getTag());
}
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view=LayoutInflater.from(parent.getContext()).inflate(R.layout.recycle_item,null);
ViewHolder vh = new ViewHolder(view);
//一个item设置一个点击事件
view.setOnClickListener(this);
return vh;
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) {
ViewHolder viewHolder = (ViewHolder) holder;
viewHolder.getIv().setImageResource(img_url[position]);
viewHolder.getTv().setText(list.get(position).get("tv_text")+"");
viewHolder.getView().setTag(position);
viewHolder.getView().setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(view.getContext(),"点击的整个"+position,Toast.LENGTH_LONG).show();
}
});
viewHolder.getIv().setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(view.getContext(),"点击了"+position,Toast.LENGTH_LONG).show();
}
});
}
@Override
public int getItemCount() {
return list.size();
}
//Holder
class ViewHolder extends RecyclerView.ViewHolder{
private View view;
private TextView tv;
private ImageView iv;
public ViewHolder(final View itemView) {
super(itemView);
this.view=itemView;
//传入的View就是item布局,所有可以找到里面的布局
tv = (TextView) itemView.findViewById(R.id.tv);
iv = (ImageView) itemView.findViewById(R.id.iv);
}
public TextView getTv() {
return tv;
}
public ImageView getIv() {
return iv;
}
public View getView() {
return view;
}
}
}
现在可以随心所欲的实现布局了。
//-------end-------
- RecyclerView的几种布局方式
- 几种布局方式
- 几种布局方式
- view的几种布局方式
- 固定布局的几种方式
- 三列布局的几种方式
- 两列布局的几种方式
- 居中布局的几种方式
- 浅谈几种常用的布局方式
- iOS界面布局的几种方式
- 关于三栏式布局的几种方式
- Android 布局使用的几种方式
- 填充布局的几种方式
- 常见的几种页面布局方式
- Android优化布局的几种方式
- 【UI布局优化】Android布局优化的几种方式
- view的几种布局方式及实践
- Android界面布局的几种常用方式
- 全国政协十二届五次会议开幕 这些明星委员成镜头焦点
- A
- 表单的提交方式:get和post
- Nginx的启动和停止
- leetcode之sort-list
- RecyclerView的几种布局方式
- C# 10进制转换2进制,并且保留两位数的方法
- struts2的java.lang.NoSuchMethodException异常处理
- exception = android.view.InflateException: Binary XML file line #21: 部分手机正常,部分手机不正常
- 380. Insert Delete GetRandom O(1)
- node中使用os模块获取操作系统信息
- SpannableString与SpannableStringBuilder
- 关于MySQL的1067错误解决方法
- 仿《雷霆战机》飞行射击手游开发--新手引导