recyclerView三种管理器和删除添加功能
来源:互联网 发布:网络电视客户端 编辑:程序博客网 时间:2024/06/04 01:06
下面就是大家需要的效果了,当然了这个效果是动态的呦,那就希望大家不要懒,自己试试看喽,效果很炫的呦
首先在module中的bulid.gradle中导入依赖
compile 'com.android.support:recyclerview-v7:25.0.0'
然后同步一下在主activity中写布局
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.bwie.test.liumengxin1508a20171013.MainActivity">
<LinearLayout
android:id="@+id/tou"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/add"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:onClick="cz"
android:text="添加" />
<Button
android:id="@+id/del"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:onClick="cz"
android:text="删除" />
<Button
android:id="@+id/list"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:onClick="cz"
android:text="List" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:id="@+id/grid"
android:onClick="cz"
android:text="Grid" />
<Button
android:id="@+id/flow"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:onClick="cz"
android:text="flow" />
</LinearLayout>
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerview_vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/tou" />
</RelativeLayout>
你可以先想好自己需要展示的布局文件,也可以先写适配器,在这里我先写的布局文件
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:background="#8A2BE2"
android:layout_margin="3dp"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/id_num"
android:layout_width="match_parent"
android:layout_height="50dp"
android:gravity="center"
android:text="1" />
</FrameLayout>
然后写自己的适配器,其中的获取随机高度,主要是为了瀑布流准备的
package com.bwie.test.liumengxin1508a20171013;
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 java.util.ArrayList;
import java.util.List;
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder>{
Context mcontext;
List<String> mlist;
List<Integer> mheight;
public MyAdapter(Context context, List<String> list) {
mcontext=context;
mlist=list;
//随机高度集合
mheight=new ArrayList<Integer>();
for(int i=0;i<mlist.size();i++){
mheight.add((int)(100+Math.random()*300));
}
}
@Override
public int getItemCount() {
return mlist.size();
}
//找到布局中空间位置
class MyViewHolder extends RecyclerView.ViewHolder{
TextView tv;
public MyViewHolder(View arg0) {
super(arg0);
tv=(TextView) arg0.findViewById(R.id.id_num);
}
}
//绑定,渲染数据到view中
@Override
public void onBindViewHolder(MyViewHolder holder, int arg1) {
ViewGroup.LayoutParams lp=holder.tv.getLayoutParams();
lp.height=mheight.get(arg1);
holder.tv.setLayoutParams(lp);
holder.tv.setText(mlist.get(arg1));
}
//先执行onCreateViewHolder
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int arg1) {
MyViewHolder holder = new MyViewHolder(LayoutInflater.from(
mcontext).inflate(R.layout.item, parent,
false));
return holder;
}
public void add(int pos) {
mlist.add(pos, "insert");
mheight.add((int)(100+Math.random()*300));
notifyItemInserted(pos);
}
public void del(int pos) {
mlist.remove(pos);
notifyItemRemoved(pos);
}
}
下面就是大招主activity中的数据代码了
package com.bwie.test.liumengxin1508a20171013;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.DefaultItemAnimator;
import android.support.v7.widget.DividerItemDecoration;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.StaggeredGridLayoutManager;
import android.view.View;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
RecyclerView recyclerView;
List<String> mlist;
MyAdapter adapter;
RecyclerView.LayoutManager LayoutManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initData();
initview();
}
private void initview() {
recyclerView = (RecyclerView) findViewById(R.id.recyclerview_vertical);
adapter = new MyAdapter(this, mlist);
//设置动画
recyclerView.setItemAnimator(new DefaultItemAnimator());
//设置分割线
recyclerView.addItemDecoration(new DividerItemDecoration(
MainActivity.this, DividerItemDecoration.HORIZONTAL));
recyclerView.addItemDecoration(new DividerItemDecoration(
MainActivity.this, DividerItemDecoration.VERTICAL));
LayoutManager = new LinearLayoutManager(this);
adapter();
}
//用来配置适配器的代码
public void adapter() {
recyclerView.setLayoutManager(LayoutManager);
recyclerView.setAdapter(adapter);
}
//自定义数据
private void initData() {
mlist = new ArrayList<String>();
for (int i = 0; i < 50; i++) {
mlist.add("number" + i);
}
}
//不同的点击按钮进行不同的操作
public void cz(View v) {
switch (v.getId()) {
case R.id.add:
adapter.add(1);
break;
case R.id.del:
adapter.del(1);
break;
case R.id.list:
LayoutManager = new LinearLayoutManager(this);
adapter();
break;
case R.id.grid:
LayoutManager = new GridLayoutManager(this, 3);
adapter();
break;
case R.id.flow:
LayoutManager = new StaggeredGridLayoutManager(4, StaggeredGridLayoutManager.VERTICAL);
adapter();
break;
}
}
}
- recyclerView三种管理器和删除添加功能
- recyclerView三种布局管理器
- android recyclerview 删除和添加 bug
- Android-RecyclerView实现Item添加和删除
- 为RecyclerView添加Header和Footer,支持三种LayoutManager
- Android RecyclerView 获取数据实现添加,删除功能
- RecyclerView实现条目展示 增加删除 3种管理器
- RecyclerView 添加删除
- RecyclerView添加删除
- RecyclerView借助ItemTouchHelper实现拖动和滑动删除功能
- RecyclerView实现滑动删除和拖拽功能
- RecyclerView 实现滑动删除和拖拽功能
- RecyclerView实现拖动排序和滑动删除功能
- OkHttp和RecyclerView结合使用,包含添加,删除,分割线
- 自定义RecyclerView添加下拉刷新和上拉加载功能
- 使用EasyUI实现添加和删除功能
- RecyclerView 的点击 添加 删除
- RecycleVIew添加和删除,以及三种展现方式
- ofbiz后台系统二级菜单的配置——组件菜单
- VC++ 比较字符串是否相等的函数strcmp和wcscmp
- 【30】纯CSS制作一台打字的电脑
- Git -- cherry-pick的用法
- Reading Note: Interpretable Convolutional Neural Networks
- recyclerView三种管理器和删除添加功能
- css3属性-webkit-font-smoothing
- kylin restfulApi
- ios常用三方的podfile
- 抽屉布局(侧拉)
- git忽略已经被提交的文件
- 初学Java,用notepad++时遇到的编码问题
- Spring 4.2集成 Quartz Scheduler 2.2.2 任务调度简单实现示例
- 使用AppScan进行扫描