私は同じ問題に直面しています。良いニュースは、人気のあるアプリ(YouTubeなど)にこの問題がないということでした。 私は参考情報resourceを見つけました。調査の後、私は私にとって便利な解決策を作りました。 キーは、最も単純な例
//Presenter class
public class ItemViewPresenter extends Presenter {
@Override
public final ViewHolder onCreateViewHolder(ViewGroup parent) {
//I use data binding
ItemBinding binding = DataBindingUtil.inflate(LayoutInflater.from(parent.getContext()), R.layout.item, parent, false);
return new MyViewHolder(binding);
}
@Override
public final void onBindViewHolder(ViewHolder viewHolder, Object item) {
String text = (String) item;
((MyViewHolder) viewHolder).bind(text);
}
@Override
public final void onUnbindViewHolder(ViewHolder viewHolder) {
}
private class MyViewHolder extends Presenter.ViewHolder {
private final ItemBinding binding;
private DiscoveryViewHolder(ItemBinding binding) {
super(binding.getRoot());
this.binding = binding;
}
private void bind(String text) {
binding.textView.setText(text);
}
}
}
//...
private void setupRecyclerView() {
RecyclerView recyclerView = _baseLayout.findViewById(R.id.recyclerView);
ArrayObjectAdapter arrayObjectAdapter = new ArrayObjectAdapter(new ItemViewPresenter());
ItemBridgeAdapter bridgeAdapter = new ItemBridgeAdapter(arrayObjectAdapter);
recyclerView.setAdapter(bridgeAdapter);
LinearLayoutManager layoutManager = new LinearLayoutManager(_baseLayout.getContext(), LinearLayoutManager.HORIZONTAL, false);
recyclerView.setLayoutManager(layoutManager);
List<Strings> textList = new ArrayList(1);
textList.add("1");
//add objects
arrayObjectAdapter.addAll(0, textList);
//clear objects
//arrayObjectAdapter.clear();
}
が同じ問題に直面する人のためにあるの代わりAdapter のPresenterを使用することです。私はそれのための回避策を見つけた。私はもうRecyclerViewを使用していません。私はこのHorizontalListView lib:https://github.com/sephiroth74/HorizontalVariableListViewに切り替えました。これは私のニーズに十分です。 – sNore