recyclerView的方式做频道管理
来源:互联网 发布:画派 知乎 编辑:程序博客网 时间:2024/06/05 19:22
//导入依赖
//在xml中进行布局
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
extends
AppCompatActivity {
private
RecyclerView recyclerView_up;
private
RecyclerView recyclerView_down;
private
List<String> listUp =
new
ArrayList<>();
private
List<String> listDown =
new
ArrayList<>();
private
ViewAdapter adapterUp;
private
ViewAdapter adapterDown;
@Override
protected
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//添加数据
initData();
initView();
}
//添加数据
for
(
int
i =
0
; i <
15
; i++) {
//默认的我们只给下面的RecyclerView添加了数据
listDown.add(
"频道管理"
+ i);
}
}
private
void
initView() {
recyclerView_up = (RecyclerView) findViewById(R.id.recyclerView_up);
recyclerView_down = (RecyclerView) findViewById(R.id.recyclerView_down);
initUp();
initDown();
}
private
void
initUp() {
//创建适配器
adapterUp =
new
ViewAdapter(MainActivity.
this
);
//添加数据,我们默认创建的时候是空的
adapterUp.setMessage(listUp);
recyclerView_up.setAdapter(adapterUp);
//RecyclerView显示样式
GridLayoutManager gridLayoutManagerUp =
new
GridLayoutManager(
this
,
3
);
recyclerView_up.setLayoutManager(gridLayoutManagerUp);
//点击监听
adapterUp.setMyItemOnClickListener(
new
MyItemOnClickListener() {
@Override
public
void
onClick(View view,
int
position) {
Log.e(
"Up"
,
"上"
+ position);
//下面的RecyclerView添加当前点击的条目信息并刷新数组
listDown.add(listUp.get(position));
adapterDown.setMessage(listDown);
adapterDown.notifyDataSetChanged();
//从当前数组移除数据并刷新数组
listUp.remove(position);
adapterUp.setMessage(listUp);
adapterUp.notifyDataSetChanged();
}
});
}
private
void
initDown() {
adapterDown =
new
ViewAdapter(MainActivity.
this
);
adapterDown.setMessage(listDown);
recyclerView_down.setAdapter(adapterDown);
GridLayoutManager gridLayoutManagerDown =
new
GridLayoutManager(
this
,
3
);
recyclerView_down.setLayoutManager(gridLayoutManagerDown);
adapterDown.setMyItemOnClickListener(
new
MyItemOnClickListener() {
@Override
public
void
onClick(View view,
int
position) {
Log.e(
"Down"
,
"下"
+ position);
//下面的RecyclerView添加当前点击的条目信息并刷新数组
listUp.add(listDown.get(position));
adapterUp.setMessage(listUp);
adapterUp.notifyDataSetChanged();
//从当前数组移除数据并刷新数组
listDown.remove(position);
adapterDown.setMessage(listDown);
adapterDown.notifyDataSetChanged();
}
});
}
}
阅读全文
1 0
- recyclerView的方式做频道管理
- RecyclerView实现频道管理
- RecyclerView频道管理
- 频道管理-RecyclerView版--桃先森
- <简单>RecyclerView仿新闻头条的频道管理
- RecyclerView之ItemTouchHelper仿今日头条频道管理拖动
- 频道管理的main方法
- 频道管理(自己的)
- 频道管理的简单使用
- 频道管理的简单用法
- 频道管理简单的处理
- android 频道管理的实现
- 频道管理的简单实现
- 频道管理的简单使用
- 频道管理的依赖实现
- 简单的tablayout频道管理
- 频道管理的实际应用
- 频道管理简单的移动
- 自学nginx(二): nginx的配置文件解读
- vue-cli搭建单页面应用
- 矩阵快速幂
- Windows安装redis
- SnackBar基本使用
- recyclerView的方式做频道管理
- Hibernate—(关系)
- phpcms 链接ucenter修改用户头像
- Spring MVC (2) 注解RequestMapping的使用
- 【React】在React项目中使用parallax.js
- Java 输入一串字符按照格式逆序输出
- 紫书 统计字符1的个数
- 剑指offer——数组中的逆序对
- 系统页面跳转