recyclerview fast android scrollbar android-recyclerview

recyclerview fast scroll android



RecyclerView scrollbar laggy (2)

esto es un problema en la versión de vista previa L. LinearLayoutManager no tiene soporte de barra de desplazamiento suave . Se solucionará cuando se publique RecyclerView.

Cuando utilicé la nueva vista de reciclado, noté que la barra de desplazamiento no es tan fluida como en ScrollView / ListView. Parece que no reconoce cuando se desplaza dentro del elemento adaptador, pero solo cambia cuando aparece un nuevo elemento / el elemento anterior desaparece, por lo que la barra de progreso salta en lugar de moverse suavemente. Este es un video que demuestra este problema. ¿Hay alguna manera de hacerlo más suave?

Mi diseño:

<android.support.v7.widget.RecyclerView android:id="@+id/listRecycler" android:scrollbars="vertical" android:layout_width="match_parent" android:layout_height="match_parent"/>

Fragmento:

mListRecycler.setAdapter(mAdapter); LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity()); layoutManager.setOrientation(LinearLayoutManager.VERTICAL); mListRecycler.setLayoutManager(layoutManager);

Adaptador:

public class NewsAdapter extends RecyclerView.Adapter<NewsAdapter.ViewHolder> { private List<News> items; private int itemLayout; public NewsAdapter(List<News> items, int itemLayout) { this.items = items; this.itemLayout = itemLayout; } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View v = LayoutInflater.from(parent.getContext()).inflate(itemLayout, parent, false); v.setOnClickListener(this); return new ViewHolder(v); } @Override public void onBindViewHolder(ViewHolder holder, int position) { News item = items.get(position); holder.text.setText(item.getTitle()); holder.itemView.setTag(item); } @Override public int getItemCount() { return items.size(); } public static class ViewHolder extends RecyclerView.ViewHolder { @InjectView(R.id.title) TextView text; public ViewHolder(View itemView) { super(itemView); ButterKnife.inject(this, itemView); } }

}


El RecyclerView también usa la altura (si la orientación es vertical o el ancho si es horizontal) para calcular la altura (o el ancho) de la barra de desplazamiento. Si su elemento List tiene la misma altura (o ancho), considere usar setHasFixedSize ().

mRecyclerList.setHasFixedSize(true);