android - 如何从 recyclerview 项目中打开活动?
问题描述
我正在尝试从 RecyclerView 打开另一个活动。我不明白如何使用该sendMessage()
方法开始新活动。我已经使用该方法和另一个按钮来打开一个新活动,我想要做的就是打开一个相同的活动,但只是使用不同的活动。
我已经尝试将该sendMessage()
方法插入到侦听器中。我尝试过使用意图。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
buildRecyclerView();
}
public void buildRecyclerView(){
mRecyclerView = findViewById(R.id.rvGoals);
mRecyclerView.setHasFixedSize(true);
mLayoutManager = new LinearLayoutManager(this);
mAdapter = new RVAdapter(mGoal);
mRecyclerView.setLayoutManager(mLayoutManager);
mRecyclerView.setAdapter(mAdapter);
mAdapter.setOnItemClickListener(new RVAdapter.OnItemClickListener() {
@Override
public void onItemClick(int position) {
mDrawerLayout = findViewById(R.id.nav_view);
mDrawerLayout.openDrawer(Gravity.START);
}
@Override
public void onAddClick(int position) {
sendMessage();
}
});
public void sendMessage(View view) {
Intent intent = new Intent(this,MainGoalInfo.class);
startActivityForResult(intent,1);
}
Recycler View 适配器:
public class RVAdapter extends RecyclerView.Adapter<RVAdapter.GoalViewHolder> {
private List<Goals> goalsRVA;
private OnItemClickListener mListener;
public interface OnItemClickListener{
void onItemClick(int position);
void onAddClick(int position);
}
public void setOnItemClickListener(OnItemClickListener listener){
mListener = listener;
}
public RVAdapter(List<Goals> goalsRVA){
this.goalsRVA=goalsRVA;
}
@Override
public int getItemCount(){
return goalsRVA.size();
}
@Override
public GoalViewHolder onCreateViewHolder(ViewGroup viewGroup,int i){
View v=LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.goal_view,viewGroup,false);
GoalViewHolder gvh=new GoalViewHolder(v,mListener);
return gvh;
}
@Override
public void onBindViewHolder(GoalViewHolder goalViewHolder, int i){
goalViewHolder.goalDescriptionRV.setText(goalsRVA.get(i).getDescription());
goalViewHolder.goalDueDateRV.setText(goalsRVA.get(i).getGoalDate());
goalViewHolder.goalTitleRV.setText(goalsRVA.get(i).getGoal());
}
@Override
public void onAttachedToRecyclerView(RecyclerView recyclerView){
super.onAttachedToRecyclerView(recyclerView);
}
public static class GoalViewHolder extends RecyclerView.ViewHolder{
CardView cv;
TextView goalDescriptionRV;
TextView goalDueDateRV;
TextView goalTitleRV;
ImageView mAddSubGoal;
GoalViewHolder(View itemView, final OnItemClickListener listener){
super(itemView);
cv=itemView.findViewById(R.id.shit_view);
goalTitleRV=itemView.findViewById(R.id.title);
goalDueDateRV=itemView.findViewById(R.id.dueDate);
goalDescriptionRV=itemView.findViewById(R.id.description);
mAddSubGoal=itemView.findViewById(R.id.ADDSUBGOAL);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (listener != null){
int position = getAdapterPosition();
if(position != RecyclerView.NO_POSITION){
listener.onItemClick(position);
}
}
}
});
mAddSubGoal.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(listener != null){
int position = getAdapterPosition();
if(position != RecyclerView.NO_POSITION){
listener.onAddClick(position);
}
}
}
});
}
}
}
解决方案
您可以setOnClickListener()
在GoalViewHolder
. 您可以使用活动中的上下文初始化适配器:
mAdapter = new RVAdapter(mGoal, this);
Recycler View 适配器:
public class RVAdapter extends RecyclerView.Adapter<RVAdapter.GoalViewHolder> {
private Context mContext;
...
public RVAdapter(List<Goals> goalsRVA, Context mContext){
this.goalsRVA=goalsRVA;
this.mContext=mContext
}
在你的GoalViewHolder
:
GoalViewHolder(View itemView, final OnItemClickListener listener){
...
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(mContext,MainGoalInfo.class);
((Activity) mContext).startActivityForResult(intent,1);
...
}
});
...
}
推荐阅读
- sql - 相加数字不匹配?
- json - 快速解构 json 对象
- css - 有没有更好的方法来实现这种布局?
- python - Telethon client.connect() 在本地工作,但不适用于 docker 容器
- python - 加载tensorflow keras检查点时找不到任何匹配的文件
- python - VScode 调试使用 Serverless 启动的 Python 文件
- sqlalchemy - SQLAlchemy 找不到表来生成外键
- javascript - 为什么在父类的构造函数中调用重载函数时,在 ES6 类上设置属性不起作用
- excel - 我将如何从设定点找到形状上的点的偏移量?
- ios - 在 HStack 中有 2 个 List/ScrollView 时,NavigationView 不会折叠 - SwiftUI