gpt4 book ai didi

java - Recycler View 的 OnClickListener 不返回任何内容

转载 作者:行者123 更新时间:2023-12-02 03:41:28 24 4
gpt4 key购买 nike

我是初学者,我正在尝试构建一个简单的录音机应用程序。我已经在网站上发布了有关外部存储访问的信息。这个问题现在已经解决了,但我还有一个关于我的 RecyclerView 的问题。

我按照在线教程来检测单击了哪个 View 并相应地播放音频(我使用 RecyclerView 来显示刚刚创建的所有录音文件)。这是有问题的教程:https://www.youtube.com/watch?v=ZXoGG2XTjzU

问题是,“OnNoteClick”根本不执行任何操作。我该如何解决这个问题?

我创建了一个带有附加函数“OnNoteClick”的界面。我在mainactivity.java中实现了这个功能。基本上我都是按照教程来的。

\\\ Adapter Code
private OnNoteListener mOnNoteListener;

...

public RecyclerViewAdapter(@NonNull ArrayList<String> text, Context context, OnNoteListener onNoteListener) {
Text = text;
this.context = context;
this.mOnNoteListener = onNoteListener;
}
...
public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.cardview, viewGroup, false);
ViewHolder holder = new ViewHolder(view, mOnNoteListener);
return holder;
}
...
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

TextView textView;
CardView ParentLayout;
OnNoteListener onNoteListener;
public ViewHolder(@NonNull View itemView, OnNoteListener onNoteListener) {
super(itemView);
textView = itemView.findViewById(R.id.cardtext);
ParentLayout = itemView.findViewById(R.id.cardview);
this.onNoteListener = onNoteListener;
ParentLayout.setOnClickListener(this);
}

@Override
public void onClick(View v) {
onNoteListener.onNoteClick(getAdapterPosition());
}
}
public interface OnNoteListener{
void onNoteClick(int position);
}

}
...
\\\ MainActivityCode
public class FileAndDirectoryActivity extends AppCompatActivity implements RecyclerViewAdapter.OnNoteListener {
...
private void initRecyclerView() {
RecyclerView recyclerView = findViewById(R.id.recyclerview);
RecyclerViewAdapter adapter = new RecyclerViewAdapter(mNames, this, this);
recyclerView.setAdapter(adapter);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
}
...
@Override
public void onNoteClick(int position) {
Toast.makeText(this, "Good News : I'm working", Toast.LENGTH_SHORT).show();
}
}
...

我希望应用程序显示一条消息“我正在工作”或类似的内容,但实际上,当我触摸卡片 View 时,什么也没有发生。

最佳答案

您的问题在于:

public void onBindViewHolder(@NonNull ViewHolder holder, int i) {
holder.textView.setText(Text.get(i));
holder.ParentLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d(TAG, "onClick: Click on this card !");
}
});
}

您在 ParentLayout 上设置了一个新的点击监听器,因此它会覆盖您在构造函数中设置的点击监听器。尝试不使用它,它应该可以工作:

public void onBindViewHolder(@NonNull ViewHolder holder, int i) {
holder.textView.setText(Text.get(i));
}

关于java - Recycler View 的 OnClickListener 不返回任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56833798/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com