代码地址lt/wechatjiemian - Gitee.com
一、RecyclerView基本概念
RecyclerView是Android 5.0推出的,是support-v7包中的新组件,它被用来代替ListView和GridView,并且能够实现瀑布流的布局,更加高级并且更加灵活,提供更为高效的回收复用机制,同时实现管理与视图的解耦合。
我们今天要做的是在原有的类微信界面上选择一个tab添加RecyclerView设计实现纵向布局浏览界面。
RecyclerView中点击item跳转到其他Activity并显示item内容如何实现?
分开来讲:
1,RecyclerView中点击item,看代码你已经实现了。
2,跳转到其他Activity,看代码你也已经实现了。
3,跳转到其他Activity并显示item内容(数据处理)
// Intent intent=new Intent();
// Intent intent=new Intent(mContext,ChatActivity.class);
// intent.putExtra("friend",msg.getFriend().toString());
// mContext.startActivity(intent);
此次在微信tab页添加列表,因此可以直接在fragment_news.xml
文件中设置
添加RecyclerView控件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".news">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
①、创建接口类OnRecyclerViewClickListener
/**
* RecyclerView条目点击接口
* Created by kang on 2018/9/19.
*/
public interface OnRecyclerViewClickListener {
void onItemClickListener(View view);
void onItemLongClickListener(View view);
}
②、RecyclerView的Adapter中处理接口
Adapter中创建方法setItemClickListener()
private OnRecyclerViewClickListener listener;
public void setItemClickListener(OnRecyclerViewClickListener itemClickListener) {
listener = itemClickListener;
}
在Adapter中onCreateViewHolder()方法中将listener注册为Click回调监听
@Override
public FirstViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(context).inflate(R.layout.item_first,null);
FirstViewHolder viewHolder = new FirstViewHolder(view);
//接口回调
if(listener != null){
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
listener.onItemClickListener(v);
}
});
view.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
listener.onItemLongClickListener(v);
return true;
}
});
}
return viewHolder;
}
想要从新闻列表页跳转至新闻详情页,首先要对点击动作做监听。
public interface OnItemClickListener{
void onItemClick(int position);
}
//点击方法
public void setOnItemClickListener(OnItemClickListener onItemClickListener){
this.onItemClickListener = (AdapterView.OnItemClickListener) onItemClickListener;
}
然后实现跳转,这里使用类名进行跳转,需要在AndroidManifest.xml中注册
<activity android:name=".ContentActivity"/>
1
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Bundle bundle = new Bundle();
try {
bundle.putCharSequence("url",list.get(position).get("url").toString());
Intent intent = new Intent(con, ContentActivity.class);
intent.putExtras(bundle);
con.startActivity(intent);
} catch (Exception e) {
e.printStackTrace();
}
}
});
索引可以通过RecyclerView.getChildAdapterPosition获取到当前点击的Item的列表索引
int position = recyclerView.getChildAdapterPosition(view);
二 生命周期状态
Activity的生命周期是指Activity从创建到销毁的整个过程,这个过程一般分为五个状态。
1.启动状态
2.运行状态
Activity处于界面的最前端,他是可见,有焦点的,可以与用户交互的。
Activity处于运行状态时,Android会尽可能的保持这个状态,即使内存不足的情况,Android也会优先销毁栈底的Activity。
3.暂停状态
Activity对用户来说仍然可见,但是无法获取焦点,对用户对他的操作没有反应,此时它处于暂停状态。
如游戏充值中的支付小窗口。
4.停止状态
Activity完全不可见,它处于停止状态。
5.销毁状态
Activity将被清理出内存