移动开发2:实现item点击的跳转功能
一.作业目标:
依托前面的设计,实现点击item能够显示出新的view
二.关键代码解析及技术说明:
1.创建一个新的activity:itemActiviy新建一个空的ItemActivity2和对应的activity_Item2.xml来实现新的界面布局
activity_item2设计如下:
activityi_item2对应的是点击item后显示的页面,接下来要设计ItemActivity2文件
public class ItemActivity2 extends AppCompatActivity {
private TextView itemTextView;
private Button backButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_item2);
Intent intent = getIntent();
String itemData = intent.getStringExtra("itemData");
itemTextView = findViewById(R.id.itemTextView);
itemTextView.setText(itemData);
backButton = findViewById(R.id.button8);
backButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
}
}
在这段代码, super.onCreate(savedInstanceState)
执行父类的 onCreate
方法。
setContentView(R.layout.activity_item2)
方法:将与 ItemActivity2
相关联的布局文件加载到当前的 Activity 中。
getIntent
方法:获取传递过来的 Intent 对象,然后从 Intent 中提取名为 "itemData" 的额外数据
findViewById
方法:找到布局文件中的 TextView
控件,并使用 setText
方法将从 Intent 中获取的数据展示在该控件中
最后,使用 findViewById
方法找到布局文件中的返回按钮 button8
,并为它设置一个点击事件监听器,当用户点击该按钮时,调用 finish()
方法关闭当前的 Activity
2.处理完ItemActivity和activity_item后,我们需要编写Myadapter中的代码,以实现点击跳转,接收传递过来的数据,在界面上展示这些数据,返回上一个界面等功能。
使用OnItemClickListener监听器,通过 list1 获取对应位置的数据,将数据设置到 ViewHolder 中的 textView 中。 textView 设置了一个点击事件监听器,当用户点击这个 TextView 时,会触发 onClick
方法,在 onClick
方法内部,首先从列表 list1
中获取被点击项的数据 itemData
,然后创建一个新的 Intent 对象,指定了当前的上下文 context1
和目标 Activity ItemActivity2
。通过 intent.putExtra("itemData", itemData)
将获取到的数据放入 Intent 中,这样在启动目标 Activity 时可以携带这些数据。context1.startActivity(intent)
启动目标 Activity,将用户点击的数据传递给 ItemActivity2
,并使用户跳转到 ItemActivity2
页面
完整代码如下:
package com.example.myapplication2;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.content.Intent;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import java.util.List;
import java.util.zip.Inflater;
public class Myadapter extends RecyclerView.Adapter<Myadapter.Myholder> {
Context context1;
List <String>list1;
public Myadapter(Context context, List<String> list){
context1=context;
list1=list;
}
@NonNull
@Override
public Myholder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view =LayoutInflater.from(context1).inflate(R.layout.item,parent,false);
Myholder myholder=new Myholder(view);
return myholder;
}
@Override
public void onBindViewHolder(@NonNull Myholder holder, final int position) {
holder.textView.setText(list1.get(position));
holder.textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String itemData = list1.get(holder.getAdapterPosition());
Intent intent = new Intent(context1, ItemActivity2.class);
intent.putExtra("itemData", itemData);
context1.startActivity(intent);
}
});
}
@Override
public int getItemCount() {
return list1.size();
}
protected class Myholder extends RecyclerView.ViewHolder {
TextView textView;
public Myholder(@NonNull View itemView) {
super(itemView);
textView=itemView.findViewById(R.id.textView1);
}
}
}
三.效果展示
四.总结
在此次实验中,完成了简单的点击item实现recycleview跳转以及进入详细页面后返回的功能,但还没有完善联系人页面,图像以及聊天界面的设计还没有完成,离具体的聊天功能界面还差的多。
代码仓库: