У меня есть RecyclerView. При этом первым элементом всегда будет HORIZONTAL RecyclerView, а остальные элементы - просто макет. Я заполняю RecyclerView и innerRecyclerView. В родительском адаптере, в getItemViewType (), я проверяю, является ли позиция 0, затем возвращаю HEADER viewType.
@Override
public int getItemViewType(int position) {{
Log.d("upisdk", "getItemViewType:" + position);
if (position == 0) {
return HEADER;
} else {
return DATA;
}
}
Все работает до сих пор. Все виды отображаются правильно. Проблема в том, что я хочу обновить innerrecyclerview (HORIONTAL), поэтому если я позвоню parentadapter.notifyitemchanged(0)
, то innerrecyclerview свернется или я скажу скрыть. И когда я звоню parentadapter.notifyitemchanged(0)
, это снова появляется. Как будто ничего не изменилось.
Код внутри BindViewHolder для HEADER.
private void configureViewHolder3(final HeaderViewHolder vh3, final int position) {
Log.d("upisdk", "position->" + position);
Log.d("upisdk", "ModelArrayList->" + ModelArrayList);
Log.d("upisdk", "innerAdapterInitialised" + innerAdapterInitialised);
if (ModelArrayList != null) {
Log.d("upisdk", "ModelArrayList.size()" + ModelArrayList.size());
}
if (ModelArrayList != null && ModelArrayList.size() > 0) {
if (innerAdapterInitialised == 0) {
uniqueTransUserAdapter = new UniqueTransUserAdapter(ModelArrayList, getContext(), MRR, MR, (AppCompatActivity) getActivity(), realm, requestBuilder);
linearLayoutManager3 = new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false) {
@Override
public boolean checkLayoutParams(RecyclerView.LayoutParams lp) {
// force height of viewHolder here, this will override layout_height from xml
lp.width = (int) (getWidth() / 4);
return true;
}
};
linearLayoutManager3.setOrientation(RecyclerView.VERTICAL);
vh3.uniqueRecyclerView.setLayoutManager(linearLayoutManager3);
vh3.uniqueRecyclerView.setAdapter(uniqueTransUserAdapter);
innerAdapterInitialised = 1;
AdapterInitialised = true;
} else {
uniqueTransUserAdapter.notifyDataSetChanged();
}
} else {
}
}
Это просто свертывание и расширение.