recyclerView的方式做频道管理

来源:互联网 发布:画派 知乎 编辑:程序博客网 时间:2024/06/05 19:22
//导入依赖
compile 'com.android.support:recyclerview-v7:25.3.1'


//在xml中进行布局
<android.support.v7.widget.RecyclerView    android:layout_weight="1"    android:id="@+id/recyclerView_up"    android:layout_width="match_parent"    android:layout_height="wrap_content"></android.support.v7.widget.RecyclerView><进行一个频道的一个分割><View    android:layout_width="match_parent"    android:layout_height="1dp"    android:background="#999999"    />    <android.support.v7.widget.RecyclerView        android:layout_weight="1"        android:id="@+id/recyclerView_down"        android:layout_width="match_parent"        android:layout_height="wrap_content">    </android.support.v7.widget.RecyclerView>

//像listview一样给给每一个item项进行布局

<TextView    android:id="@+id/textview"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:layout_margin="5dp"    android:padding="3dp"    android:text="1235458"    />

/创建一个接口类

interface MyItemOnClickListener {    void onClick(View view, int position);}
//创建适配器

public class ViewAdapter extends RecyclerView.Adapter<MViewAdper.MyViewHolder> {    private Context mContext;    /**     *特别注意一下mList后面一定要默认赋值,不然运行的时候会报错,因为我们默认上面的RecyclerView是没有添加数据的     */    private List<String> mList=new ArrayList<>();    private MyItemOnClickListener myItemOnClickListener;    public MViewAdper(Context context) {        this.mContext = context;    }    //传数组的方法    public void setMessage(List<String> list) {        this.mList = list;    }    //写个方法把接口传过来    public void setMyItemOnClickListener(MyItemOnClickListener myItemOnClickListener)    {        this.myItemOnClickListener = myItemOnClickListener;    }    @Override    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {        //打气筒填充我们自定义的message.xml的试图        View view=View.inflate(mContext, R.layout.mess_age,null);        //优化        final MyViewHolder holder = new MyViewHolder(view);        //监听        view.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                //调用我们自定义接口的方法                myItemOnClickListener.onClick(v, holder.getLayoutPosition());            }        });        return holder;    }    @Override    public void onBindViewHolder(MyViewHolder holder, int position) {        MyViewHolder viewHolder = holder;        viewHolder.textView.setText(mList.get(position));    }    @Override    public int getItemCount() {        return mList.size();    }    //ViewHolder优化    static class MyViewHolder extends RecyclerView.ViewHolder {        private TextView textView;        public MyViewHolder(View itemView) {            super(itemView);            textView = (TextView) itemView.findViewById(R.id.textview);        }    }}

//在主activity中写数据

public class MainActivity extendsAppCompatActivity {
  privateRecyclerView recyclerView_up;
  privateRecyclerView recyclerView_down;
  privateList<String> listUp =newArrayList<>();
  privateList<String> listDown =newArrayList<>();
  privateViewAdapter adapterUp;
  privateViewAdapter adapterDown;
  @Override
  protectedvoidonCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    //添加数据
    initData();
    initView();
  }
  //添加数据
    for(inti = 0; i <15; i++) {
    //默认的我们只给下面的RecyclerView添加了数据
      listDown.add("频道管理"+ i);
    }
  }
  privatevoidinitView() {
    recyclerView_up = (RecyclerView) findViewById(R.id.recyclerView_up);
    recyclerView_down = (RecyclerView) findViewById(R.id.recyclerView_down);
    initUp();
    initDown();
  }
  privatevoidinitUp() {
    //创建适配器
    adapterUp =newViewAdapter(MainActivity.this);
    //添加数据,我们默认创建的时候是空的
    adapterUp.setMessage(listUp);
    recyclerView_up.setAdapter(adapterUp);
    //RecyclerView显示样式
    GridLayoutManager gridLayoutManagerUp =newGridLayoutManager(this,3);
    recyclerView_up.setLayoutManager(gridLayoutManagerUp);
    //点击监听
    adapterUp.setMyItemOnClickListener(newMyItemOnClickListener() {
      @Override
      publicvoidonClick(View view,intposition) {
        Log.e("Up","上"+ position);
        //下面的RecyclerView添加当前点击的条目信息并刷新数组
        listDown.add(listUp.get(position));
        adapterDown.setMessage(listDown);
        adapterDown.notifyDataSetChanged();
        //从当前数组移除数据并刷新数组
        listUp.remove(position);
        adapterUp.setMessage(listUp);
        adapterUp.notifyDataSetChanged();
      }
    });
  }
  privatevoidinitDown() {
    adapterDown =newViewAdapter(MainActivity.this);
    adapterDown.setMessage(listDown);
    recyclerView_down.setAdapter(adapterDown);
    GridLayoutManager gridLayoutManagerDown =newGridLayoutManager(this,3);
    recyclerView_down.setLayoutManager(gridLayoutManagerDown);
    adapterDown.setMyItemOnClickListener(newMyItemOnClickListener() {
      @Override
      publicvoidonClick(View view,intposition) {
        Log.e("Down","下"+ position);
        //下面的RecyclerView添加当前点击的条目信息并刷新数组
        listUp.add(listDown.get(position));
        adapterUp.setMessage(listUp);
        adapterUp.notifyDataSetChanged();
        //从当前数组移除数据并刷新数组
        listDown.remove(position);
        adapterDown.setMessage(listDown);
        adapterDown.notifyDataSetChanged();
      }
    });
  }
}