我有一个RecyclerView,在用户点击某个项目时播放录音。我希望当用户单击item1时,播放特定的录音并更改View按钮的行为,这正常工作。
但是当item1正在播放录音时,如果用户点击item2,则item1所在行的按钮会回到其原始位置。
下面的图像显示了单击item1(第一行)时的视图。(这正常工作)
我还尝试在inBindViewHolder方法中控制视图,但无法实现,因为每当我单击holder对象时,只会控制当前选择的行的视图。
以下代码片段放置在ViewHolder中
mPlayAudio.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View view)
{
Log.d(TAG, "onClick: Present in onClick mPlayAudio");
if (listener != null)
{
final int position = getAdapterPosition();
if (position != RecyclerView.NO_POSITION)
{
// This section contain the code to play and stop
the audio
// Using below line I only able to change selected
// row button View not other row Button View
mPlayAudio.setImageResource(R.drawable.play);
}
}
}
});
我也尝试在onBindViewHolder方法中添加此代码,但仍然无法正常工作。
下面的代码添加在onBindViewHolder中
holder.mPlayAudio.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view)
{
// 此部分包含播放和停止音频的代码。
// 使用以下语句,我只能更改当前选定行视图的可见性,而不能更改其他行视图的可见性
holder.mPlayAudio.setImageResource(R.drawable.play);
}
}