6

新しいリサイクラー ビューを使用したとき、スクロールバーが通常の ScrollView/ListView ほど流動的ではないことに気付きました。アダプターアイテム内をスクロールしても認識しないようですが、新しいアイテムが表示される/古いアイテムが消えるときにのみ変更されるため、プログレスバーはスムーズに移動する代わりにジャンプします。これは、この問題を説明するビデオです。滑らかにする方法はありますか?

私のレイアウト:

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

断片:

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

アダプタ:

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);
    }
}

}

4

2 に答える 2

0

RecyclerView は、スクロールバーの高さ (または幅) を計算するために、高さ (垂直の場合は垂直、水平の場合は幅) も使用します。リスト項目の高さ (または幅) が同じ場合は、setHasFixedSize() の使用を検討してください。

mRecyclerList.setHasFixedSize(true);
于 2015-05-10T07:33:17.507 に答える