RecyclerView实现多条目展示,点击图片显示动画,长按删除条目

必要的权限:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

依赖

compile 'com.android.support:recyclerview-v7:26.1.0'
compile 'com.squareup.okhttp3:okhttp:3.9.0'
compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'
implementation 'com.google.code.gson:gson:2.2.4'

效果图:



Activity代码:

public class MainActivity extends AppCompatActivity {

    private MainPresenter mainPresenter;
    private RecyclerView rcv;
    private MyAdapter adapter;
    @SuppressLint("HandlerLeak")
    private Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            if (msg.what == 1) {
                final List<RecyclBean.DataBean> data = (List<RecyclBean.DataBean>) msg.obj;
                LinearLayoutManager linearLayoutManager = new LinearLayoutManager(MainActivity.this);
                rcv.setLayoutManager(linearLayoutManager);


                //网格式
//                rcv.setLayoutManager(new GridLayoutManager(MainActivity.this,3));
                //瀑布流
//                rcv.setLayoutManager(new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL));
                adapter = new MyAdapter(data, MainActivity.this);
                rcv.setAdapter(adapter);
                //点击事件
                adapter.setOnItemClickListener(new MyAdapter.OnItemClickListener() {

                    @Override
                    public void onClick(int position, View view) {
                        
                        ObjectAnimator alpha = ObjectAnimator.ofFloat(view, "alpha", 1f, 1f, 0f, 1f);
                        alpha.setDuration(2000);
                        alpha.start();

                    }

                    @Override
                    public void onLongClick(int position) {
                        Toast.makeText(MainActivity.this, "您长按删除了" + (position + 1) + "行", Toast.LENGTH_SHORT).show();
                        data.remove(position);
                        adapter.notifyDataSetChanged();
                    }
                });

            }
        }
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
        initData();
    }

    //初始化RecyclerView控件
    private void initView() {
        rcv = (RecyclerView) findViewById(R.id.rcv);
    }

    //获取数据
    private void initData() {
        mainPresenter = new MainPresenter();
        mainPresenter.getData(new IMainView() {


            @Override
            public void OnSuccess(List<RecyclBean.DataBean> data) {
                Log.e("TAG", "OnSuccess: " + data.get(1).getTITLE());
                Message msg = new Message();
                msg.what = 1;
                msg.obj = data;
                handler.sendMessage(msg);

            }
        });
    }
}

RecyclerView的Adapter代码:

/**
 * author:Created by WeiWeiFeng on 2018/4/27.
 */

public class MyAdapter extends RecyclerView.Adapter {
    public static final int TYPE_RIGHT_IMAGE = 0;
    public static final int TYPE_THREE_IMAGE = 1;
    private Context context;
    private OnItemClickListener mOnItemClickListener;
    private List<RecyclBean.DataBean> list;


    public MyAdapter(List<RecyclBean.DataBean> list, Context context) {
        this.list = list;
        this.context = context;
    }

    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view;
        //根据不同的itemType创建不同的布局
        if (viewType == TYPE_RIGHT_IMAGE) {
            view = View.inflate(context, R.layout.right_image, null);
            return new RIGHTIMAGEHolder(view);
        } else {
            view = View.inflate(context, R.layout.three_image, null);
            return new THREEIMAGEHolder(view);
        }

    }

    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) {
        int itemViewType = holder.getItemViewType();
        switch (itemViewType) {
            case 0:
                final RIGHTIMAGEHolder holder1 = (RIGHTIMAGEHolder) holder;
                holder1.tv_right.setText(list.get(position).getTITLE());
                ImageLoader.getInstance().displayImage(list.get(2).getIMAGEURL(), holder1.iv_right);
                if (mOnItemClickListener != null) {
                    holder1.iv_right.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            mOnItemClickListener.onClick(position, holder1.iv_right);
                        }
                    });
                    holder1.itemView.setOnLongClickListener(new View.OnLongClickListener() {
                        @Override
                        public boolean onLongClick(View v) {
                            mOnItemClickListener.onLongClick(position);
                            return true;
                        }
                    });
                }
                break;
            default:
                final THREEIMAGEHolder holder2 = (THREEIMAGEHolder) holder;
                holder2.tv_three.setText(list.get(position).getTITLE());
                ImageLoader.getInstance().displayImage(list.get(position).getIMAGEURL(), holder2.iv_t1);
                ImageLoader.getInstance().displayImage(list.get(position).getIMAGEURL(), holder2.iv_t2);
                ImageLoader.getInstance().displayImage(list.get(position).getIMAGEURL(), holder2.iv_t3);
                if (mOnItemClickListener != null) {
                    holder2.iv_t1.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            mOnItemClickListener.onClick(position, holder2.iv_t1);
                        }
                    });
                    holder2.iv_t2.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            mOnItemClickListener.onClick(position, holder2.iv_t2);
                        }
                    });
                    holder2.iv_t3.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            mOnItemClickListener.onClick(position, holder2.iv_t3);
                        }
                    });
                    holder2.itemView.setOnLongClickListener(new View.OnLongClickListener() {
                        @Override
                        public boolean onLongClick(View v) {
                            mOnItemClickListener.onLongClick(position);
                            return false;
                        }
                    });
                }

                break;

        }
    }

    //点击接口
    public interface OnItemClickListener {
        void onClick(int position, View view);

        void onLongClick(int position);
    }

    public void setOnItemClickListener(OnItemClickListener onItemClickListener) {
        this.mOnItemClickListener = onItemClickListener;
    }

    //item的数量
    @Override
    public int getItemCount() {
        if (list != null) {
            return list.size();
        }
        return 0;
    }

    @Override
    public int getItemViewType(int position) {

        if (position % 3 == 0) {
            return TYPE_RIGHT_IMAGE;
        } else {
            return TYPE_THREE_IMAGE;
        }
    }

    //创建ViewHolder
    public class RIGHTIMAGEHolder extends RecyclerView.ViewHolder {

        private final TextView tv_right;
        private final ImageView iv_right;

        public RIGHTIMAGEHolder(View itemView) {
            super(itemView);
            tv_right = itemView.findViewById(R.id.tv_right);
            iv_right = itemView.findViewById(R.id.iv_right);
        }
    }

    public class THREEIMAGEHolder extends RecyclerView.ViewHolder {

        private final TextView tv_three;
        private final ImageView iv_t1;
        private final ImageView iv_t2;
        private final ImageView iv_t3;

        public THREEIMAGEHolder(View itemView) {
            super(itemView);
            tv_three = itemView.findViewById(R.id.tv_three);
            iv_t1 = itemView.findViewById(R.id.iv_t1);
            iv_t2 = itemView.findViewById(R.id.iv_t2);
            iv_t3 = itemView.findViewById(R.id.iv_t3);
        }
    }


}
布局去这里看
 
 
 https://blog.csdn.net/qq_35353487/article/details/74336019

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值