【问题标题】:How to show only one progress bar before loading images in recyclerview?在recyclerview中加载图像之前如何只显示一个进度条?
【发布时间】:2021-09-06 16:28:51
【问题描述】:

您好,我想在布局中显示一个进度条中心

但是有一些问题

以下是我尝试过的一些方法以及遇到的问题

我用于进度条的库link

方法一

我尝试在布局中添加进度条,然后在 java 中添加可见直到加载图像并且加载图像时无敌。进度条正在工作,但是

我的方法 1 有问题

图片在recyclerview中加载不正确

输出

方法二

我尝试使用带有滑动的占位符来实现它,但是

方法2的问题

我不希望每张图片都显示进度条

这是方法一的代码

XML

 <RelativeLayout
     <androidx.core.widget.NestedScrollView
     <LinearLayout

     <androidx.recyclerview.widget.RecyclerView
                    android:id="@+id/postRecyclerView"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:orientation="vertical"
                    android:overScrollMode="never" />

                <com.github.ybq.android.spinkit.SpinKitView
                    xmlns:app="http://schemas.android.com/apk/res-auto"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:id="@+id/CustomProgressBar"
                    style="@style/SpinKitView.WanderingCubes"
                    android:layout_gravity="center"
                    app:SpinKit_Color="@color/white"/>
    </LinearLayout>
    </androidx.core.widget.NestedScrollView>
    </RelativeLayout>

Java

 ProgressBar progressBar;

    progressBar = progressBar.findViewById(R.id.CustomProgressBar);
    Sprite wanderingCubes = new WanderingCubes();
    progressBar.setIndeterminateDrawable(wanderingCubes);

     postRecyclerView = view.findViewById(R.id.postRecyclerView);
        postRecyclerView.setLayoutManager(
                new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL)
        );
    
    getData();
    progressBar.setVisibility(View.VISIBLE);
    
    
    private void getData() {
            databaseReference.addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot snapshot) {
                    if (snapshot.exists()) {
                        mUploads.clear();
                        for (DataSnapshot dataSnapshot : snapshot.getChildren()) {
                            progressBar.setVisibility(View.GONE);
                            postRecyclerView.setVisibility(View.VISIBLE);
                            Upload upload = dataSnapshot.getValue(Upload.class);
                            upload.setmKey(dataSnapshot.getKey());
                            mUploads.add(upload);
    
    
                        }
    
                    }
    
                    //notify the adapter
                    postsAdapter.notifyDataSetChanged();
                }

【问题讨论】:

  • 尝试在onDataChange的代码末尾添加进度条和recyclerview

标签: android android-recyclerview android-progressbar contentplaceholder


【解决方案1】:

试试这样的

private void getData() {
            databaseReference.addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot snapshot) {
                    if (snapshot.exists()) {
                        mUploads.clear();
                        for (DataSnapshot dataSnapshot : snapshot.getChildren()) {
                            Upload upload = dataSnapshot.getValue(Upload.class);
                            upload.setmKey(dataSnapshot.getKey());
                            mUploads.add(upload);
    
    
                        }
    
                    }
    
                    //notify the adapter
                    postsAdapter.notifyDataSetChanged();
                            progressBar.setVisibility(View.GONE);
                            postRecyclerView.setVisibility(View.VISIBLE);
                }

【讨论】:

    猜你喜欢
    • 2021-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-06
    • 1970-01-01
    • 2019-07-22
    相关资源
    最近更新 更多