首先实现一个普通的ListView展示效果,可以看到的是跟ListView相似度很高。
第一步,配置build.gradle
implementation'com.android.support:recyclerview-v7:27.1.1'
第二步,编写Adapter
public class MainAdapter extends RecyclerView.Adapter<MainAdapter.MyViewHolder> {
private List<String> mList;
private Context mContext;
public MainAdapter(List<String> mList, Context mContext) {
this.mList = mList;
this.mContext = mContext;
}
public void removeData(int position){
mList.remove(position);
notifyItemRemoved(position);
}
//返回当前的ViewHolder对象
@NonNull
@Override
public MainAdapter.MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
return new MyViewHolder(LayoutInflater.from(mContext).inflate(R.layout.recycler_item,parent,false));
}
//数据与视图绑定
@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
holder.title.setText(mList.get(position));
}
@Override
public int getItemCount() {
return mList.size();
}
class MyViewHolder extends RecyclerView.ViewHolder{
TextView title;
public MyViewHolder(View itemView) {
super(itemView);
title =itemView.findViewById(R.id.item_tv);
}
}
}
第三步,开始使用
public class MainActivity extends Activity {
private RecyclerViewmRecyclerView;
private MainAdaptermAdapter;
private ListmList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mRecyclerView = findViewById(R.id.id_recyclerview);
/**
* 设置布局管理器,如果要设置水平的布局则应该重新设置LayoutManager,默认是垂直
* new LinearLayoutManager(this).setOrientation(LinearLayoutManager.HORIZONTAL)
*/
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
//设置item增加删除时的动画
mRecyclerView.setItemAnimator(new DefaultItemAnimator());
//造一点数据
mList =new ArrayList<>();
for (int i=1;i<7;i++){
mList.add(""+i);
}
mAdapter =new MainAdapter(mList,this);
mRecyclerView.setAdapter(mAdapter);
}
}
XML >> activity_main
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<android.support.v7.widget.RecyclerView
android:id="@+id/id_recyclerview"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</LinearLayout>
XML >> recycler_item
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/white">
<TextView
android:id="@+id/item_tv"
android:layout_width="match_parent"
android:layout_height="50dp"
android:gravity="center"
android:text="hello"/>
</FrameLayout>
效果图
screenshot_20180608_132452.png
网友评论