Android RecyclerView的简单使用
首先添加recyclerview的依赖函数:
compile 'com.android.support:recyclerview-v7:24.2.1'
现在才能正式开始使用recyclerview;
第一步:在xml文件中创建recycleview:
<android.support.v7.widget.RecyclerView
android:id="@+id/recycleview"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
第二步:创建recyclerview的布局文件(这里我给大家创建了一个加载数据的textview和响应点击事件的button):
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="16sp" />
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"/>
</LinearLayout>
第三步:创建recyclerview布局文件对应的类
public class Text {
private String text; //因为布局时textview所以这里用String,图片用int
public Text(String text) {
this.text = text;
}
public String getText() {
return text;
}
}
第四步:创建适配器adapter
public class TextAdapter extends RecyclerView.Adapter<TextAdapter.ViewHolder> {
private List<Text> textList; //存储Text对象的list
private Context context; //获取fragment的context
public TextAdapter(List<Text> textList,Context context) {
this.textList = textList;
this.context = context;
}
@Override
public TextAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
//传入recyclerview的布局文件
View view = LayoutInflater.from(context).inflate(R.layout.recycler_card,parent,false);
ViewHolder viewHolder = new ViewHolder(view);//为ViewHolder添加view
return viewHolder;
}
@Override
public void onBindViewHolder(final TextAdapter.ViewHolder holder, int position) {
/*
* 获取当前位置的对象
* */
final Text text = textList.get(position);
/*
* 为textview添加数据
* */
holder.text.setText(text.getText());
/*
* 响应button的点击事件
* */
holder.button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(context,text.getText(),Toast.LENGTH_SHORT).show();//点击都出现当前textview上的值
}
});
}
@Override
public int getItemCount() {
return textList.size(); //返回textList长度
}
static class ViewHolder extends RecyclerView.ViewHolder { //创建一个继承RecyclerView.ViewHolder的类
TextView text; //布局文件中的控件
Button button; //布局文件中的控件
public ViewHolder(View itemView) {
super(itemView);
text = (TextView) itemView.findViewById(R.id.text);
button = (Button) itemView.findViewById(R.id.button);
}
}
}
第四步:添加数据并显示recyclerview
public class MainActivity extends AppCompatActivity {
private List<Text> list = new ArrayList<>();
private RecyclerView recyclerView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();//向list添加数据
recyclerView = (RecyclerView) findViewById(R.id.recycleview);
LinearLayoutManager manager = new LinearLayoutManager(this);//初始化线性布局
manager.setOrientation(LinearLayoutManager.HORIZONTAL);//设置线性布局为横向(不设置默认为纵向)
recyclerView.setLayoutManager(manager);
TextAdapter adapter = new TextAdapter(list,this);//初始化TextAdapter
recyclerView.setAdapter(adapter);
}
private void init() {
Text text = new Text("你好0");
list.add(text);
Text text1 = new Text("你好1");
list.add(text1);
Text text2 = new Text("你好2");
list.add(text2);
Text text3 = new Text("你好3");
list.add(text3);
Text text4 = new Text("你好4");
list.add(text4);
Text text5 = new Text("你好5");
list.add(text5);
}
}
横向
点击
纵向
点击