这个下问题还是在项目中遇到的,查了好多资料才明白,废话不多说,先看一下效果图(一个RecyclerView列表,点击列表中的条目,弹出图提示框,并跳转到另外一个Activity)
https://weibo.com/tv/v/H9YPaiFtz?fid=1034:4323787475205327
上面链接就是效果。点击是在Adapter里面实现的,刚开始我也是和大家一样不明白为什么写了下面的代码就报错,一直不能正确跳转
Intent intent=new Intent(this,AnotherActivity.class);
startActivity(intent);
后来才发现,Adapter是一个java类并不是一个Activity,普通的java类并不能正确获得上下文环境,因为这个类没有在AndroidManifest文件里面注册。所以在进行条状的时候只要需要手动获取上下文环境就可以了,代码如下:
public class TextViewAdapter extends RecyclerView.Adapter<TextViewAdapter.ViewHolder> {
public List<String> mList=null;
public TextViewAdapter(List<String> mList){
this.mList=mList;
}
static class ViewHolder extends RecyclerView.ViewHolder{
private TextView textView;
public ViewHolder(View itemView) {
super(itemView);
textView=itemView.findViewById(R.id.text_item);
}
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view=LayoutInflater.from(parent.getContext()).inflate(R.layout.text_item,parent,false);
ViewHolder holder=new ViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(final ViewHolder holder, int position) {
String str=mList.get(position);
holder.textView.setText(str);
holder.textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//点击条目弹出提示框
Toast.makeText(v.getContext(),
"你点击的字母是:"+holder.textView.getText(),Toast.LENGTH_LONG).show();
//点击条目进行跳转到另外一个Activity
Intent intent=new Intent(v.getContext(),AnotherActivity.class);
v.getContext().startActivity(intent);
}
});
}
@Override
public int getItemCount() {
return mList.size();
}
}
以上就是我自己定义的Adapter里面的代码,跳转的部分注释的很详细了,自己能看懂。至于为什么使用v.getContext()能够获取到上下文环境大家自己查资料,这里不进行讲解。
已经明白的可以留言讲讲你的想法。