Я создал домашний экран для своего приложения, и он состоит из 3 горизонтальных элементов RecyclerVIews:

Все три созданы в таким же образом, используя это:
public class DiscoverItemAdapter extends RecyclerView.Adapter<DiscoverItemAdapter.DiscoverItemsViewHolder> {
private List<DiscoverItems> discoverItems;
interface OnDiscoverItemClickListener {
void onClick(DiscoverItems discoverItems);
}
private OnDiscoverItemClickListener listener;
public DiscoverItemAdapter(List<DiscoverItems> discoverItems, OnDiscoverItemClickListener listener) {
this.discoverItems = discoverItems;
this.listener = listener;
}
@Override
public DiscoverItemsViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_Item_discover, parent, false);
return new DiscoverItemsViewHolder(view);
}
@Override
public void onBindViewHolder(DiscoverItemsViewHolder holder, int position) {
holder.bind(discoverItems.get(position));
}
@Override
public int getItemCount() {
return discoverItems.size();
}
class DiscoverItemsViewHolder extends RecyclerView.ViewHolder {
TextView ItemName;
ImageView ItemCover;
DiscoverItems discoverItems;
private DiscoverItemsViewHolder(View itemView) {
super(itemView);
ItemName = itemView.findViewById(R.id.tv_ItemName);
ItemCover = itemView.findViewById( R.id.iv_ItemCover );
itemView.setOnClickListener( v -> listener.onClick(discoverItems) );
}
private void bind(DiscoverItems discoverItems) {
this.discoverItems = discoverItems;
String ItemID = discoverItems.getItemID();
MyItemClient client = new MyItemClient();
client.getItems(ItemID, new JsonHttpResponseHandler(){
@Override
public void onSuccess(int statusCode, Header[] headers, JSONObject response){
if(response!=null){
final MyItem Items = MyItem.fromJson(response);
ItemName.setText( Items.getTitle() );
Picasso.with(itemView.getContext()).load( Uri.parse(Items.getCoverUrl())).into(ItemCover);
}
}
});
}
}
}
Я хотел бы показать круговую ProgressBar
в центре экрана, пока все RecyclerViews
не заполнятся элементами.
Я попытался использовать
pb_Discover.setVisibility( View.VISIBLE );
----CALLING THE RECYCLERVIEW-----
pb_Discover.setVisibility( View.GONE);
Однако он устанавливает видимость на GONE
сразу после завершения вызова, даже если RecyclerView еще не заполнен.
Где можно разместить строку pb_Discover.setVisibility( View.GONE);
, поэтому он действительно исчезнет только после заполнения всех RecyclerViews
?
Решение :
Мне удалось решить эту проблему, добавив:
rv_PopularItems.getViewTreeObserver()
.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
flagscounter = flagscounter + 1;
CheckViewsLoaded(flagscounter);
rv_PopularItems.getViewTreeObserver().removeOnGlobalLayoutListener(this);
}
});
Я делаю это в каждом из RecyclerViews, а затем, если flagcounter = 3
, я устанавливаю Visibility на GONE
Спасибо