根据课程内容实现对Activity生命周期的理解,使用log展示生命周期的状态变化;
在前次作业的基础上增加列表项的单项点击功能,具体要求是:新建一个新的activity1,recycleview的某一项点击后跳转到这个新的activity1
实现最新的activityforresult功能,具体要求如下:新建一个新的activity2,在activity1上添加按钮可收到activity2的回传值。
纵向布局
实现代码:
recyclerview.setLayoutManager(new LinearLayoutManager(this));
或
LinearLayoutManager manager = new LinearLayoutManager(this);
manager.setOrientation(LinearLayoutManager.VERTICAL);
recyclerview.setLayoutManager(manager);
点击功能
RecyclerView
的点击事件有两种写法:
① 在Adapter
里面直接对控件做点击事件
② 写接口,在Activity
或Fragment
上实现接口中定义的方法
在 Adapter 里面直接对控件做点击事件
@Override
public void onBindViewHolder(@NonNull XxxViewHolder holder, int position) {
holder.控件名.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO:
}
});
}
在 Adapter 里写接口
public interface OnItemClickListener {
void onItemClick(参数类型 参数名 , ...);
}
private OnItemClickListener mListener;
public XxxAdapter(Context context, OnItemClickListener listener) {
mContext = context;
mListener = listener;
}
@Override
public void onBindViewHolder(@NonNull XxxViewHolder holder, int position) {
holder.控件名.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mListener.onItemClick(content);
}
});
}
在 Activity 或 Fragment 上实现接口中定义的方法
public class XxxActivity extends AppCompatActivity implements XxxAdapter.OnItemClickListener
XxxAdapter adapter = new XxxAdapter(context, this);
@Override
public void onItemClick(String content) {
// TODO:
}
实际操作
分组:
recyclerView
分组的写法有很多种,我会在分组
、顶部悬浮
、联动
中给出不同的写法。
第一种分组写法也是最简单的一种,将组名和内容写在同一个布局,在onBindViewHolder
里根据位置来进行组名的显示与隐藏:
if (position == 0) {
holder.组名.setVisibility(View.VISIBLE);
} else {
if (list.get(position).get组().equals(list.get(position - 1).get组())) {
holder.组名.setVisibility(View.GONE);
} else {
holder.组名.setVisibility(View.VISIBLE);
}
}
实现点击跳转
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="5dp"
android:background="@color/light_blue"
android:orientation="vertical">
<TextView
android:id="@+id/friend_name"
android:layout_width="match_parent"
android:layout_height="15dp"
android:layout_margin="10dp"
android:layout_weight="1"
android:background="@color/ivory"
android:fontFamily="@font/huawencaiyun"
android:gravity="center"
android:text="嘉然"
android:textColor="@color/blue"
android:textSize="30sp" />
<TextView
android:id="@+id/friend_info"
android:layout_width="match_parent"
android:layout_height="200dp"
android:layout_weight="1"
android:layout_margin="10dp"
android:text=" 嘉然(Diana),乐华娱乐旗下虚拟偶像女团A-SOUL成员,组合吃货担当。所属组合A-SOUL是乐华娱乐年度最新企划中打造的虚拟偶像女团,共由五名成员(向晚Ava、贝拉Bella、珈乐Carol、嘉然Diana、乃琳Eileen)组成,于2020年11月23日首次公开; [1] 2020年12月2日发布第一首团体单曲《Quiet》 [3] ;2021年4月30日发布第二首团体单曲《超级敏感》; [4] 12月17日,发布A-SOUL出道一周年系列主题曲《传说的世界》 [10] ;2022年1月,获得哔哩哔哩“2021年度百大UP主”称号。 [6-7] 2022年2月3日,发布虎年贺岁单曲《除夕》 "
android:fontFamily="@font/huawenxingkai"
android:textSize="22sp" />
<ImageView
android:id="@+id/friend_pic"
android:layout_width="match_parent"
android:layout_height="200dp"
android:layout_weight="1"
app:srcCompat="@drawable/jiaran" />
<Button
android:id="@+id/btn_back"
android:layout_width="100dp"
android:layout_height="5dp"
android:layout_gravity="center"
android:layout_weight="1"
android:alpha="0.5"
android:text="返回"
android:textColor="#000000"
android:textSize="18sp" />
</LinearLayout>
实验小结:通过这次实验加深了对Activity生命周期的理解,通过自己一步一步的摸索实现了点击跳转的功能,知道了应该新建一个新的activity1,然后recycleview的一项点击后跳转到这个新的activity1,尽管可能这次的实验内容并不是很难,但还是让我消耗了不少体力,去解决在实验过程中遇到的各种问题,有的是因为粗心大意,有的则是没有搞明白一些技术要点,反正脚踏实地耐心的去做,去敲代码最后还是完成了实验,希望能够真正学到知识掌握在自己手中。
仓库地址:何豪豪/王圣辉