如何获取在RecyclerView
行中被单击的项的位置,然后在onClick
方法中创建一个活动的意图?这是我的适配器:
public class SergejAdapter extends RecyclerView.Adapter<SergejAdapter.MyViewHolder>{
private LayoutInflater inflater;
List<Information> data= Collections.emptyList();
public SergejAdapter(Context context, List<Information> data){
inflater = LayoutInflater.from(context);
this.data=data;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = inflater.inflate(R.layout.navigation_drawer_custom_row,parent,false);
MyViewHolder holder= new MyViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
Information current=data.get(position);
holder.title.setText(current.title);
}
@Override
public int getItemCount() {
return data.size();
}
class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
TextView title;
ImageView icon;
public MyViewHolder(View itemView){
super(itemView);
title= (TextView) itemView.findViewById(R.id.listText);
icon = (ImageView) itemView.findViewById(R.id.listIcon);
icon.setOnClickListener(this);
}
@Override
public void onClick(View v) {
Context context = itemView.getContext();
Intent intent = new Intent(context, Ernaehrung.class);
context.startActivity(intent);
}
}
在这里,当其中一个图像被单击时,我只有一个onClick
,但每个图像都有相同的意图。
发布于 2015-01-11 19:59:33
您可以使用getAdapterPosition()
方法从ViewHolder获取位置。如以下代码所示:
public class SergejAdapter extends RecyclerView.Adapter<SergejAdapter.MyViewHolder>{
...
class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
@Override
public void onClick(View v) {
// here you use position
int position = getAdapterPosition();
...
}
}
}
发布于 2015-01-11 20:02:52
在您的onClick(View v)
中,您可以简单地调用getLayoutPosition()
,它将返回单击发生的位置。有关详细信息,请查看official docs。
所以你的代码应该是这样的:
@Override
public void onClick(View v) {
switch(getLayoutPosition()){
//TODO
}
}
你最好使用一个接口来处理点击。
发布于 2015-10-16 17:38:37
或者,您可以添加以下内容:
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder > {
...
class MyViewHolder extends RecyclerView.ViewHolder {
public MyViewHolder (View itemView) {
super(itemView);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d(TAG, "Element " + getAdapterPosition() + " clicked.");
}
});
}
}
https://stackoverflow.com/questions/27886737
复制相似问题