0%

Android-RecycleView

Android-RecycleView


RecycleView简介

RecylerView是support-v7包中的新组件,是一个强大的滑动组件,与经典的ListView相比,同样拥有item回收复用的功能,这一点从它的名字recylerview即回收view也可以看出。

RecylerView使用步骤

一. 导入v7包,右键项目,点击Open Module Settings,点击Dependencies,再点击右边的+号,点击第一项Library dependency,进入后选择com.android.support:recyclerview-v7:28.0.0后点击ok

二. activity_recycleview布局

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:orientation="vertical"
tools:context=".RecycleViewActivity">

<android.support.v7.widget.RecyclerView
android:id="@+id/rv"
android:layout_width="match_parent"
android:layout_height="match_parent"/>

</LinearLayout>

三. 和ListView一样的item布局

四. 定义一个线性的Adapter适配器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47

public class LinearAdapter extends RecyclerView.Adapter<LinearAdapter.LinearViewHolder> {

private Context context;
//private OnItemClickListener listener;

public LinearAdapter(Context context/*, OnItemClickListener listener*/){
this.context=context;
//this.listener=listener;
}

@Override
public LinearAdapter.LinearViewHolder onCreateViewHolder( ViewGroup viewGroup, int i) {
return new LinearViewHolder(LayoutInflater.from(context).inflate(R.layout.item_listview,viewGroup,false));
}

@Override
public void onBindViewHolder(LinearAdapter.LinearViewHolder viewHolder, final int i) {
viewHolder.textView.setText("Hello World!!");
//点击事件的实现
viewHolder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(context,"click"+i,Toast.LENGTH_SHORT).show();
// listener.onClick(i);
}
});
}

@Override
public int getItemCount() {
return 15;
}

class LinearViewHolder extends RecyclerView.ViewHolder{
private TextView textView;//为简化代码就只设置textView了,image就不设置了

public LinearViewHolder( View itemView) {
super(itemView);
textView = itemView.findViewById(R.id.tv_name);
}
}
/* public interface OnItemClickListener{
void onClick(int pos);
}*/
}

五. 在MainActivity中使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class RecycleViewActivity extends AppCompatActivity {
private RecyclerView recyclerView;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_recycleview);
//绑定id
recyclerView = findViewById(R.id.rv);
//设置RecycleView的布局方式,这里是线性布局,默认垂直
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setAdapter(new LinearAdapter(this));

}
}

RecyclerView的扩展

RecyclerView当然还有很多用法,仅仅是布局就包括了线性布局,网格布局,水平布局,瀑布流等多种形式,除此以外还有Decoration等修饰功能,可以说是非常好用,有兴趣可自行了解。