需要在build里添加依赖
compile 'com.android.support:recyclerview-v7:25.3.1'
布局文件activity_main
<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">
</View>
<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>
在layout下定义一个message.xml布局文件,用来显示RecyclerView里的文字,跟listview的意义差不多
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:padding="3dp"
android:text="123123123" />
写一个 MyItemOnClickListener 接口用来监听点击事件,在里边传入两个参数,第一个是试图,第二是点击的下标
public interface MyItemOnClickListener {
void onClick(View view,int position);
}
RecyclerView的适配器类
//RecyclerView.Adapter<?>里写的是优化继承ViewHolder的帮助类
public class ViewAdapter extends RecyclerView.Adapter<ViewAdapter.MyViewHolder> {
private Context mContext;
/**
*特别注意一下mList后面一定要默认赋值,不然运行的时候会报错,因为我们默认上面的RecyclerView是没有添加数据的
*/
private List<String> mList=new ArrayList<>();
private MyItemOnClickListener myItemOnClickListener;
public ViewAdapter(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.messgae, 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);
}
}
}
在MainActivity的实现
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();
}
});
}
}
以上所述是小编给大家介绍的Android RecyclerView仿新闻头条的频道管理功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
# recyclerview
# 新闻头条频道管理
# Android实现雅虎新闻摘要加载视差动画效果
# Android仿网易新闻图片详情下滑隐藏效果示例代码
# Android开发实现自定义新闻加载页面功能实例
# Android UI设计与开发之PopupWindow仿腾讯新闻底部弹出菜单
# Android网络编程之简易新闻客户端
# Android模拟实现网易新闻客户端
# Android 模拟新闻APP显示界面滑动优化实例代码
# Android实现基本功能的新闻应用
# 自定义
# 小编
# 移除
# 的是
# 第一个
# 在此
# 给大家
# 报错
# 所述
# 头条
# 给我留言
# 感谢大家
# 只给
# 疑问请
# 有任何
# interface
# public
# TextView
# listview
# onClick
相关文章:
定制建站哪家更专业可靠?推荐榜单揭晓
定制建站价位费用解析与套餐推荐全攻略
北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?
如何自定义建站之星模板颜色并下载新样式?
高防服务器如何保障网站安全无虞?
沈阳制作网站公司排名,沈阳装饰协会官方网站?
建站之星如何助力企业快速打造五合一网站?
魔毅自助建站系统:模板定制与SEO优化一键生成指南
早安海报制作网站推荐大全,企业早安海报怎么每天更换?
广东专业制作网站有哪些,广东省能源集团有限公司官网?
广州网站建站公司选择指南:建站流程与SEO优化关键词解析
c# Task.Yield 的作用是什么 它和Task.Delay(1)有区别吗
制作农业网站的软件,比较好的农业网站推荐一下?
Swift中swift中的switch 语句
建站之星CMS五站合一模板配置与SEO优化指南
如何通过老薛主机一键快速建站?
常州自助建站:操作简便模板丰富,企业个人快速搭建网站
html制作网站的步骤有哪些,iapp如何添加网页?
如何在IIS7上新建站点并设置安全权限?
C++中的Pimpl idiom是什么,有什么好处?(隐藏实现)
制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?
电商平台网站制作流程,电商网站如何制作?
智能起名网站制作软件有哪些,制作logo的软件?
成都品牌网站制作公司,成都营业执照年报网上怎么办理?
如何快速搭建二级域名独立网站?
新网站制作渠道有哪些,跪求一个无线渠道比较强的小说网站,我要发表小说?
GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息?
网站制作专业公司有哪些,如何制作一个企业网站,建设网站的基本步骤有哪些?
深圳网站制作案例,网页的相关名词有哪些?
微信网站制作公司有哪些,民生银行办理公司开户怎么在微信网页上查询进度?
在线教育网站制作平台,山西立德教育官网?
陕西网站制作公司有哪些,陕西凌云电器有限公司官网?
如何选择美橙互联多站合一建站方案?
小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?
中山网站推广排名,中山信息港登录入口?
制作网站的过程怎么写,用凡科建站如何制作自己的网站?
如何在腾讯云免费申请建站?
PHP 500报错的快速解决方法
如何通过万网虚拟主机快速搭建网站?
如何撰写建站申请书?关键要点有哪些?
网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?
如何通过虚拟主机快速搭建个人网站?
免费制作小说封面的网站有哪些,怎么接网站批量的封面单?
相册网站制作软件,图片上的网址怎么复制?
如何批量查询域名的建站时间记录?
建站为何优先选择香港服务器?
,购物网站怎么盈利呢?
建站与域名管理如何高效结合?
天河区网站制作公司,广州天河区如何办理身份证?需要什么资料有预约的网站吗?
网站网页制作专业公司,怎样制作自己的网页?
*请认真填写需求信息,我们会在24小时内与您取得联系。