我目前正在使用片段中的回收站视图。我的回收者视图列表中有4个项目。现在,我想使用if / case方法打开4个新的不同活动。但是我可以打开一个活动,而不能按照其职位打开其他活动。这是我的RecyclerViewAdapter Java代码。另外,请让我知道在点击侦听器上打开的最佳做法。
package com.kidslearning.course.adapter;
import android.content.Context;
import android.content.Intent;
import android.media.Image;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.RecyclerView;
import com.kidslearning.course.NewHindiActivity;
import com.kidslearning.course.R;
import com.kidslearning.course.fragment.EnglishFragment;
import com.kidslearning.course.fragment.HindiFragment;
import com.kidslearning.course.fragment.MathFragment;
import com.kidslearning.course.model.HindiFragmentModel;
import java.util.List;
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.MyViewHolder> {
Context mContext;
List<HindiFragmentModel> mData;
private MathFragment MathFragment;
public RecyclerViewAdapter(Context mContext, List<HindiFragmentModel> mData) {
this.mContext = mContext;
this.mData = mData;
}
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View v;
v = LayoutInflater.from(mContext).inflate(R.layout.fragmentdesign,parent,false);
MyViewHolder vHolder = new MyViewHolder(v);
mContext = v.getContext();
return vHolder;
}
@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
holder.tv_name.setText(mData.get(position).getName());
holder.img.setImageResource(mData.get(position).getPhoto());
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(v.getContext(), NewHindiActivity.class);
v.getContext().startActivity(intent);
//now I want to open other activity by clicking on 2nd recycler view item.
}
});
}
@Override
public int getItemCount() {
return mData.size();
}
public static class MyViewHolder extends RecyclerView.ViewHolder {
private TextView tv_name;
private ImageView img;
public MyViewHolder(@NonNull View itemView) {
super(itemView);
tv_name = (TextView) itemView.findViewById(R.id.titleView);
img = (ImageView) itemView.findViewById(R.id.imageView);
}
}
}
这是您的onClick()
代码
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (position == 0) {
Intent intent = new Intent(v.getContext(), FirstActivity.class);
mContext.startActivity(intent);
} else if (position == 1) {
Intent intent = new Intent(v.getContext(), SecondActivity.class);
mContext.startActivity(intent);
} else if (position == 2) {
Intent intent = new Intent(v.getContext(), ThirdActivity.class);
mContext.startActivity(intent);
} else if (position == 3) {
Intent intent = new Intent(v.getContext(), FourthActivity.class);
mContext.startActivity(intent);
}
}
});
在onClick
项目中添加此代码
Intent intent;
switch(position) {
case 0:
intent = new Intent(v.getContext(), NewHindiActivity.class);
v.getContext().startActivity(intent);
break;
case 1:
intent = new Intent(v.getContext(), SecondActivity.class);
v.getContext().startActivity(intent);
break;
default:
break;
}
如果不想使用if / case陈述式,也可以添加到模型目标页面,例如:
class HindiFragmentModel {
...
private Activity pageToGo;
...
public Activity getPageToGo() {
return pageToGo; }
public void setPageToGo(Activity pageToGo) {
this.pageToGo = pageToGo; }
}
设置者使用:
yourHindiFragmentModelObject.setPageToGo(new DestinationActivity())
最后在适配器中:
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(v.getContext(), mData.get(position).getPageToGo().getClass());
v.getContext().startActivity(intent);
}
});