美文网首页
RecyclerView(滑动组件)

RecyclerView(滑动组件)

作者: Summer_27d1 | 来源:发表于2018-08-06 19:10 被阅读0次
image.png

需要依赖v7包


image.png
image.png
image.png
image.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>
···
效果图:

image.png

相关文章

网友评论

      本文标题:RecyclerView(滑动组件)

      本文链接:https://www.haomeiwen.com/subject/whngvftx.html