我正在使用此方法让我的recyclerview项目顺利滚动,它就像魅力一样,但是,它会导致recyclerview内的项目由于某种原因不响应点击事件。 这是我用来实现滚动效果的方法:
public void autoScrollAdsList(){
final int scrollSpeed =80; // Scroll Speed in Milliseconds
handler = new Handler();
runnable = new Runnable() {
int x = 15; // Pixels To Move/Scroll
boolean flag = true;
// Find Scroll Position By Accessing RecyclerView's LinearLayout's Visible Item Position
int scrollPosition = MyManager.findFirstVisibleItemPosition();
int arraySize = mAdsList.size(); // Gets RecyclerView's Adapter's Array Size
@Override
public void run() {
if (scrollPosition < arraySize) {
if (scrollPosition == arraySize - 1) {
flag = false;
} else if (scrollPosition <= 1) {
flag = true;
}
if (!flag) {
try {
// Delay in Seconds So User Can Completely Read Till Last String
TimeUnit.SECONDS.sleep(1);
mAdsRCV.scrollToPosition(0); // Jumps Back Scroll To Start Point
} catch (InterruptedException e) {
e.printStackTrace();
}
}
// Know The Last Visible Item
scrollPosition = MyManager.findLastCompletelyVisibleItemPosition();
mAdsRCV.smoothScrollBy(x, 0);
handler.postDelayed(this, scrollSpeed);
}
}
};
handler.postDelayed(runnable, scrollSpeed);
}
这是我在适配器中注册clickevents的地方:
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType){
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.element_annonce_search_horiz,parent,false);
v.setOnClickListener(new MyRecyItemClickLisetner());
return new MyViewHolder(v);}
除了实现相应接口的内部类之外:
class MyRecyItemClickLisetner implements View.OnClickListener{
public void onClick(View v){
TextView t = v.findViewById(R.id.HiddenAdId);
int id =Integer.parseInt(t.getText().toString());
Intent i = new Intent(getActivity(),AdDetails.class);
Bundle b = new Bundle();
b.putInt("Ad ID",id);
i.putExtras(b);
startActivity(i);
}
我该如何解决这个问题?