![](https://img.haomeiwen.com/i12083643/518f963b7c792f7b.png)
需要依赖v7包
![](https://img.haomeiwen.com/i12083643/f2d0b2677bba7aa7.png)
![](https://img.haomeiwen.com/i12083643/081e204141fc9905.png)
![](https://img.haomeiwen.com/i12083643/73563f0abe271d88.png)
![](https://img.haomeiwen.com/i12083643/47cdfd7e1ae116fe.png)
简单实现RecyclerView
首先
一 ,创建一个项目 ,写一个类(MyRecyclerViewAdapter)继承RecyclerView.Adapter<MyRecyclerViewAdapter.MyViewHolder> 实现里面的三个方法
其中MyViewHolder是自己定义的一个内部类
···
class MyViewHolder extends RecyclerView.ViewHolder{
TextView tx;
ImageView ig;
public MyViewHolder(View itemView) {
super(itemView);
tx=itemView.findViewById(R.id.textView);
ig=itemView.findViewById(R.id.img);
}
}
···
----------------具体代码如下-----------------
···
package com.example.lenovo.test03;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;
/**
- Created by lenovo on 2018/8/6.
*/
public class MyRecyclerViewAdapter extends RecyclerView.Adapter<MyRecyclerViewAdapter.MyViewHolder>{
Context context;
ArrayList<Integer> alist;
public MyRecyclerViewAdapter( Context context,ArrayList<Integer> alist){
this.context=context;
this.alist=alist;
}
@Override//创建ViewHolder对象 完成视图的绑定
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = View.inflate(context, R.layout.adapter, null);
MyViewHolder holder = new MyViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(MyViewHolder holder, final int position) {
holder.ig.setImageResource(alist.get(position));
holder.ig.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(context, "当前点击位置:"+position, Toast.LENGTH_SHORT).show();
add(position);
}
});
holder.ig.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View view) {
delete(position);
return true;
}
});
}
@Override
public int getItemCount() {
return alist.size();
}
class MyViewHolder extends RecyclerView.ViewHolder{
TextView tx;
ImageView ig;
public MyViewHolder(View itemView) {
super(itemView);
tx=itemView.findViewById(R.id.textView);
ig=itemView.findViewById(R.id.img);
}
}
//自定义添加 动画效果
public void add(int position){
alist.add(position,R.mipmap.ic_launcher_round);
notifyItemInserted(position);
notifyItemRangeChanged(position, alist.size());
}
//自定义删除 动画效果
public void delete(int position){
alist.remove(position);
notifyItemRemoved(position);
notifyItemRangeChanged(position, alist.size());
}
public void updateAdapter(ArrayList<Integer> alist){
this.alist = alist;
notifyDataSetChanged();
}
}
···
MainActivity 中代码:
···
package com.example.lenovo.test03;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.DefaultItemAnimator;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.OrientationHelper;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.StaggeredGridLayoutManager;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
ArrayList<Integer>alist=new ArrayList<>();
Button bt;
RecyclerView recyclerView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
}
private void init() {
for (int i = 0; i <20 ; i++) {
if (i%2==0){
alist.add(R.drawable.a8);
}else {
alist.add(R.drawable.f2);
}
}
RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recyclerview);
//创建设置排列方式的布局管理对象 线性布局、网格布格、瀑布流布局
//线性布局
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
//对于线线性布局管理器设置 显示的方向
linearLayoutManager.setOrientation(OrientationHelper.VERTICAL);
//设置网格布局
GridLayoutManager grid = new GridLayoutManager(MainActivity.this,2);
//设置瀑布流布局
StaggeredGridLayoutManager staggeredGridLayout =
new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL);
//将布局管理器设置给RecyclerView
recyclerView.setLayoutManager(staggeredGridLayout);
//设置显示动画(添加、删除)
recyclerView.setItemAnimator(new DefaultItemAnimator());
//设置适配器
final MyRecyclerViewAdapter adapter = new MyRecyclerViewAdapter(MainActivity.this,alist);
recyclerView.setAdapter(adapter);
//自定刷新
bt= (Button) findViewById(R.id.button);
bt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
alist.add(android.R.drawable.ic_lock_lock);
adapter.updateAdapter(alist);
}
});
}
}
···
main.xml
···
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.example.lenovo.test03.MainActivity">
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="button"
/>
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerview"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
···
adapter.xml
···
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/img"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="center"
app:srcCompat="@mipmap/ic_launcher"
/>
<TextView
android:id="@+id/textView"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:text="图样图森破"
android:textSize="18sp"
android:textStyle="bold"
android:textColor="@color/colorAccent"
/>
</LinearLayout>
···
效果图:
![](https://img.haomeiwen.com/i12083643/310173a8123799d3.png)
网友评论