android - 仅在我的 viewpager 的第一页中显示进度条

标签 android android-fragments android-viewpager android-progressbar

我设置了一个包含 3 个 fragment 的 viewpager。我的 viewpager 的第一页包含来自数据库的数据。如何在加载数据之前仅为第一页实现进度条。

自定义 fragment =>

public class HomeContentFragment extends Fragment {
    public static ArrayList<ShishaBar> arrayList;
    public static ContentAdapter adapter;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        RecyclerView recyclerView = (RecyclerView) inflater.inflate(
                R.layout.recycler_view, container, false);
        adapter = new ContentAdapter();
        recyclerView.setAdapter(adapter);
        recyclerView.setHasFixedSize(true);
        recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));

        new BackgroundWorker().execute();
        return recyclerView;
    }

    public static class ViewHolder extends RecyclerView.ViewHolder {
        public ImageView picture;
        public TextView name;
        public TextView description;
        public ViewHolder(LayoutInflater inflater, ViewGroup parent) {
            super(inflater.inflate(R.layout.item_card, parent, false));
            picture = (ImageView) itemView.findViewById(R.id.card_image);
            name = (TextView) itemView.findViewById(R.id.card_title);
            description = (TextView) itemView.findViewById(R.id.card_text);
            itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Context ctx = v.getContext();
                    Intent intent = new Intent(ctx, DetailActivity.class);
                    intent.putExtra(DetailActivity.EXTRA_POSITION, getAdapterPosition());
                    ctx.startActivity(intent);
                }
            });
        }
    }

    public static class ContentAdapter extends RecyclerView.Adapter<ViewHolder> {

        public ContentAdapter() {
            arrayList = new ArrayList<>();
        }

        @Override
        public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            return new ViewHolder(LayoutInflater.from(parent.getContext()), parent);
        }

        @Override
        public void onBindViewHolder(ViewHolder holder, int position) {
            holder.picture.setImageBitmap(arrayList.get(position).getImage());
            holder.name.setText(arrayList.get(position).getName());
            holder.description.setText(arrayList.get(position).getStraat()+ " " + arrayList.get(position).getHuisnr()+ ", "+arrayList.get(position).getStad());
        }

        @Override
        public int getItemCount() {
            return arrayList.size();
        }
    }


}

如果我在 viewpager 上放一个进度条,所有页面都会有进度条,我只希望它出现在第一页上。如果我将进度条放在我的 card_view 的 xml 中,您将无法看到进度条,直到加载数据。

最佳答案

ViewPager 的适配器中,检查页面的索引,如:

public void instantiateItem(...,int position){
    if(position == 0){
         /* inflate a view that contains the ProgressBar and process it */
    ...
    }
}

关于android - 仅在我的 viewpager 的第一页中显示进度条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39331447/

相关文章:

android - Android jni cpp 文件中的垫到位图

android - 如何在 Fragment 中获取 Google Maps 对象

android - ViewPager 在某些 Android 设备上不工作

java - 如何在 Java 代码中加载 Android 布局文件,而不是将其静态放置在主 xml 布局文件中?

android - 有没有办法在 ObjectAnimator 中为 textSize 指定 TypedValue?

android - 如何将 Android DataStore 与多用户或文件一起使用

android - 如何从Backstack位置获取 fragment

android - 拖放持久位置

android - 圆形指示器不可见

android - sleep 前更新 TextView