Так что я смотрел на сотни вопросов, за прошедший день, читая все, и это то, что я собрал ...Ресайклер Просмотр лага на прокрутку вверх и вниз
Один человек сказал добавить следующее:
homeRecyclerView.setHasFixedSize(true);
, который я пробовал, ничего не сделал, потому что вопрос о прокрутке вниз или вверх отстает? Как для.
Это можно сделать, и я использовал Picasso (возможно, потому что хочу проверить представление перед выполнением вызова сервера). Так что кто-то сказал, что, возможно, система кэширования затрагивает его, удаляет Picasso, а изображения могут по умолчанию иметь изображение, но по-прежнему отстает от ...
Вот заявление в домашней деятельности:
homeRecyclerView = (RecyclerView) findViewById(R.id.home_recycler_view);
homeRecyclerView.setHasFixedSize(true);
homeAdapter = new HomeAdapter(this, homeList);
RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getApplicationContext());
homeRecyclerView.setLayoutManager(mLayoutManager);
homeRecyclerView.setItemAnimator(new DefaultItemAnimator());
homeRecyclerView.setAdapter(homeAdapter);
public interface ClickListener {
void onClick(View view, int position);
void onLongClick(View view, int position);
}
public static class RecyclerTouchListener implements RecyclerView.OnItemTouchListener {
private GestureDetector gestureDetector;
private MainHome.ClickListener clickListener;
public RecyclerTouchListener(Context context, final RecyclerView recyclerView, final MainHome.ClickListener clickListener) {
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));
}
return false;
}
@Override
public void onTouchEvent(RecyclerView rv, MotionEvent e) {
}
@Override
public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {
}
}
Это дом адаптер:
public class HomeAdapter extends RecyclerView.Adapter<HomeAdapter.MyViewHolder>{
private List<items> items;
private Context context;
public class MyViewHolder extends RecyclerView.ViewHolder {
public TextView text;
public ImageView pic;
public MyViewHolder(View view) {
super(view);
text = (TextView) view.findViewById(R.id.text);
pic = (ImageView) view.findViewById(R.id.pic);
}
}
public HomeAdapter(Context mContext, List<items> items) {
context = mContext;
this.items = items;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.home_item, parent, false);
return new MyViewHolder(itemView);
}
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
Typeface myTypeface = Typeface.createFromAsset(context.getAssets(), "font1.ttf");
Typeface myTypefaceItalic = Typeface.createFromAsset(context.getAssets(), "font2.ttf");
Typeface myTypefaceBold = Typeface.createFromAsset(context.getAssets(), "font3.ttf");
Item item = items.get(position);
holder.text.setTypeface(myTypefaceBold);
Picasso.with(context).load(R.drawable.robot).into(holder.pic);
}
@Override
public int getItemCount() {
return items.size();
}
}
Anyo ne, кто может обратить внимание на то, что может быть причиной этой проблемы или предложений с запаздыванием. Я перешел из ListView с держателем в адаптере для просмотра утилизатор слух, что она мягче и лучше ... но это, кажется, хуже прокрутки ...
Удивительный, это было! – Lion789
Только что нашел этот пост. Отличный ответ. Работала отлично. Спасибо –