Volley 会自行启动后台线程,因此所有网络请求都在 UI 线程之外执行,因此您基本上不再需要扩展 AsyncTask。
您可以在同一活动上尝试以下操作。
RecyclerTouchListener.java
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.View;
public class RecyclerTouchListener implements RecyclerView.OnItemTouchListener {
private GestureDetector gestureDetector;
private ClickListener clickListener;
public RecyclerTouchListener(Context context, final RecyclerView recyclerView, final ClickListener clickListener) {
Log.d("Slider", "constructer");
this.clickListener = clickListener;
gestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() {
@Override
public boolean onSingleTapUp(MotionEvent e) {
return true;
}
@Override
public void onLongPress(MotionEvent e) {
View child = recyclerView.findChildViewUnder(e.getX(), e.getY());
if (child != null && clickListener != null) {
clickListener.onLongClick(child, recyclerView.getChildPosition(child));
}
}
});
}
@Override
public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {
View child = rv.findChildViewUnder(e.getX(), e.getY());
if (child != null && clickListener != null && gestureDetector.onTouchEvent(e)) {
clickListener.onClick(child, rv.getChildPosition(child));
}
Log.d("Slider", "onInterceptTouchEvent" + gestureDetector.onTouchEvent(e));
return false;
}
@Override
public void onTouchEvent(RecyclerView rv, MotionEvent e) {
Log.d("Slider", "onTouchEvent" + e);
}
@Override
public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {
}
public static interface ClickListener {
public void onClick(View view, int position);
public void onLongClick(View view, int position);
}
}
在您的活动页面中使用以下内容:
recyclerView.addOnItemTouchListener(new RecyclerTouchListener(this, recyclerView, new RecyclerTouchListener.ClickListener(){
@Override
public void onClick(View view, int position) {
//Get the data using position and call the function for volley request
}
@Override
public void onLongClick(View view, int position) {
}
}));