Java Recyclerview不可点击android studio(可能是我的代码错误?)
所以我有一个回收视图,里面有两个标签和一个图像。我需要在单击此recyclerView时导航到第二个活动..我不知道我做错了什么..我的意思是我的recyclerView仍然不可单击 主要活动代码:Java Recyclerview不可点击android studio(可能是我的代码错误?),java,android,android-recyclerview,Java,Android,Android Recyclerview,所以我有一个回收视图,里面有两个标签和一个图像。我需要在单击此recyclerView时导航到第二个活动..我不知道我做错了什么..我的意思是我的recyclerView仍然不可单击 主要活动代码: RecyclerView relative1 = (RecyclerView) findViewById(R.id.result_list); relative1.setOnClickListener(new View.OnClickListener(){ @
RecyclerView relative1 = (RecyclerView) findViewById(R.id.result_list);
relative1.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
// viewResults class is the class that starts the second activity.
startActivity(new Intent(getApplicationContext(),ViewResults.class));
}
});
这是ViewResults.java
public class ViewResults extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//here i try to start the new activity when recycler view is clicked
setContentView(R.layout.secondActivity);
}
}
在适配器类中,使用holder.itemView.setOnClickListener
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Context context = holder.itemView.getContext();
Toast.makeText(context, "Your logic comes here", Toast.LENGTH_SHORT).show();
}
})
并删除了这段代码,因为您需要在RecyclerView中的各个视图上设置单击侦听器,而不是整个RecyclerView
recyclerView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
如果要从activity类设置单击,请在adapter类中创建接口。输入适配器代码。
public class AdapterClass_Recycler extends RecyclerView.Adapter<AdapterClass_Recycler.ViewClass> {
Context context;
private static ClickListener clickListener;
public AdapterClass_Recycler(MainActivity mainActivity) {
this.context = mainActivity;
}
@NonNull
@Override
public ViewClass onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
LayoutInflater layoutInflater = LayoutInflater.from(context);
View view = layoutInflater.inflate(R.layout.item_view, null);
return new ViewClass(view);
}
@Override
public void onBindViewHolder(@NonNull ViewClass viewClass, int i) {
}
@Override
public int getItemCount() {
return length;
}
public class ViewClass extends RecyclerView.ViewHolder implements View.OnLongClickListener, View.OnClickListener {
public ViewClass(@NonNull View itemView) {
super(itemView);
itemView.setOnClickListener(this);
itemView.setOnLongClickListener(this);
}
@Override
public void onClick(View v) {
clickListener.onItemClick(getAdapterPosition(), v);
}
@Override
public boolean onLongClick(View v) {
clickListener.onItemLongClick(getAdapterPosition(), v);
return false;
}
}
public void setOnItemClickListener(ClickListener clickListener) {
AdapterClass_Recycler.clickListener = clickListener;
}
public interface ClickListener {
void onItemClick(int position, View v);
void onItemLongClick(int position, View v);
}
你想让整个RecyclerView都可以点击吗?@Giorgosnokleus是的mate@tryingmybest那么你希望recyclerview作为一个整体是可点击的?不是其中的项目(这是通常的用例)?如果是这样,您可能必须使用
setClickable
和setFocusable
您无法使RecycleView可点击,它会覆盖onTouchEvent,并且不会处理点击。您可以尝试使用GestureDetector处理单击或扩展RecyclerView并返回单击逻辑。
adapterClassObject.setOnItemClickListener(new AdapterClass_Recycler.ClickListener() {
@Override
public void onItemClick(int position, View v) {
Toast.makeText(MainActivity.this, "Click"+position, Toast.LENGTH_SHORT).show();
}
@Override
public void onItemLongClick(int position, View v) {
Toast.makeText(MainActivity.this, "Long"+position, Toast.LENGTH_SHORT).show();
}
});