RecyclerView的监听与简介的上拉刷新

RecyclerView是Android5.0的新特性用来替换掉ListView和Gridview 总的来说RecyclerView比较灵活 高效 解耦度高 但得自定义分割线和列表点击事件


 MainActivity:

package com.example.administrator.mytest;

import android.os.Bundle;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.DefaultItemAnimator;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity implements SwipeRefreshLayout.OnRefreshListener{

    private RecyclerView mRecycler;
    private myAdapter adapter;
    private List data;
    private SwipeRefreshLayout mRefreshLayout;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mRecycler= (RecyclerView) findViewById(R.id.my_recycler);
        mRefreshLayout = (SwipeRefreshLayout)findViewById(R.id.layout_swipe_refresh);
        //设置布局管理器 默认垂直
        mRecycler.setLayoutManager(new LinearLayoutManager(this));
//        mRecycler.setLayoutManager(new StaggeredGridLayoutManager(3,StaggeredGridLayoutManager.VERTICAL));
        //设置添加删除 动画
        mRecycler.setItemAnimator(new DefaultItemAnimator());
        data=new ArrayList<String>();
        data.add("007");
        data.add("002");
        data.add("1");data.add("2");data.add("3");data.add("4");
        data.add("5");data.add("6");data.add("7");data.add("8");

        adapter=new myAdapter(this,data);
        mRecycler.setAdapter(adapter);
        mRefreshLayout.setOnRefreshListener(this);
//        对每个Item进行监听
        adapter.setOnItemClickListener(new myAdapter.OnItemClickListener() {
            @Override
            public void onItemClick(View view, int position) {
//                Toast.makeText(MainActivity.this, data.get(position)+"="+position, Toast.LENGTH_SHORT).show();
                //删除该Item
                adapter.ItemRemove(position);
                adapter.notifyDataSetChanged();
            }
        });

    }
    @Override
    public void onRefresh() {
//          处理刷新的数据 比如设置每次刷新就加一条
                data.add(0,"Faye");
        adapter.notifyDataSetChanged();
        mRefreshLayout.setRefreshing(false);
    }

}


myAdapter:

package com.example.administrator.mytest;

import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;

import java.util.List;
public class myAdapter extends RecyclerView.Adapter<myAdapter.MyViewHolder> implements View.OnClickListener{
    private List<String> mList;
    private Context context;
//    声明 接口的变量
    private OnItemClickListener mOnItemClickListener = null;

    public myAdapter(Context mcontext,List<String> list){
        this.mList=list;
        this.context=mcontext;
    }

    //加载条目布局
    @Override
    public myAdapter.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
     View view=   LayoutInflater.from(context).inflate(R.layout.recycler_item,parent,false);
      MyViewHolder holder=new MyViewHolder(view);
        view.setOnClickListener(this);
        return holder;
    }
public void ItemRemove(int position){
    mList.remove(position);
    notifyItemRemoved(position);
}

   //将视图与数据绑定
    @Override
    public void onBindViewHolder(myAdapter.MyViewHolder holder, int position) {
       holder.tv.setText(mList.get(position));
        //将position保存在itemView的Tag中,以便点击时进行获取
        holder.itemView.setTag(position);
    }

    @Override
    public int getItemCount() {
        return mList.size();
    }

    @Override
    public void onClick(View v) {
        if (mOnItemClickListener != null) {
            //注意这里使用getTag方法获取position
            mOnItemClickListener.onItemClick(v,(int)v.getTag());
        }
    }

    class MyViewHolder extends RecyclerView.ViewHolder {
        TextView tv;
        public MyViewHolder(View itemView) {
            super(itemView);
            tv= (TextView) itemView.findViewById(R.id.item_tv);
            tv.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Toast.makeText(context,"我是Item的子控件",Toast.LENGTH_SHORT).show();
                }
            });
        }
    }
    //暴露给外部用
    public void setOnItemClickListener(OnItemClickListener listener) {
        this.mOnItemClickListener = listener;
    }
//定义接口
    public static interface OnItemClickListener{
        void onItemClick(View view , int position);
    }

}


MainActivity XML文件

<?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"

 >
    <android.support.v4.widget.SwipeRefreshLayout
        android:id="@+id/layout_swipe_refresh"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    <android.support.v7.widget.RecyclerView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/my_recycler"
        />
    </android.support.v4.widget.SwipeRefreshLayout>
    </LinearLayout>


效果图




猜你喜欢

转载自blog.csdn.net/en_wei/article/details/76422265
今日推荐