【发布时间】:2019-03-31 18:04:27
【问题描述】:
我想在RecylerView 中的每个项目显示给用户后对其进行检测。
基本上,我试图在每个项目加载到屏幕后播放声音。
但我无法检测到每个项目何时加载到屏幕上!有没有我必须调用的方法来检测呈现的每个项目
E.g 1st RecyclerView item displayed -> play sound
2st RecyclerView item displayed -> play sound...
我的适配器类看起来像这样 -
public class AdapterListAnimation extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private List<Multiples> items = new ArrayList<>();
private Context ctx;
private OnItemClickListener mOnItemClickListener;
private int animation_type = 0;
.........
.........
我从onCreated() 方法调用这个initComponent() 方法。您能否就我应该如何实现上述目标提供建议?
private void initComponent() {
recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setHasFixedSize(true);
items = DataGenerator.getPeopleData(this,of,value);
setAdapter();
/* MediaPlayer mp=MediaPlayer.create(this, R.raw.sword);
if (mp.isPlaying()) {
mp.stop();
mp.release();
mp = MediaPlayer.create(this, R.raw.sword);
} mp.start();*/
}
private void setAdapter() {
// Set data and list adapter
mAdapter = new AdapterListAnimation(this, items, animation_type);
recyclerView.setAdapter(mAdapter);
// on item list clicked
mAdapter.setOnItemClickListener(new AdapterListAnimation.OnItemClickListener() {
@Override
public void onItemClick(View view, com.math.multiplication.model.Multiples obj, int position) {
Snackbar.make(parent_view, "Item " + obj.first + " clicked", Snackbar.LENGTH_SHORT).show();
}
});
}
【问题讨论】:
-
我不太明白您所说的“在每个项目加载到屏幕后播放声音”是什么意思。例如,如果您的适配器有 10 个元素并且同时显示其中的 5 个,您会期望播放 5 个声音吗?当用户滚动并显示新项目时会怎样?
-
@lelloman 先生,在此链接上stackoverflow.com/questions/55516858 我已经清楚地描述了您的问题。
-
您的问题解决了吗?
标签: java android android-recyclerview android-viewholder