scrollview 中的 firebase recyclerview 中的更新选项不起作用
updateoptions in firebase recyclerview inside scrollview not working
我在 fragment.it 中的 nestedscrollview 中创建了 firebase recyclerview well.but 当我在 firebase recyclerview 中使用 updateoptions 时,recyclerview 不工作。
我不知道如何解决这个问题。
最初创建的片段加载了来自 firebase.the recyclerview 的项目当我点击按钮更新选项时不起作用
这是我的 firebaserecyclerview
<?xml version="1.0" encoding="utf-8"?>
<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/fragment_bg"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="20dp"
android:orientation="vertical"
android:layout_marginBottom="50dp"
>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fontFamily="@font/montserrat"
android:text="Hi, Aashik"
android:textColor="@color/colorPrimary"
android:layout_marginHorizontal="20dp"
android:textSize="25dp" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fontFamily="@font/montserrat_bold"
android:layout_marginHorizontal="20dp"
android:text="Welcome Back"
android:textColor="@color/colorPrimary"
android:textSize="30dp" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="20dp"
android:fontFamily="@font/montserrat_bold"
android:text="Category"
android:textColor="@color/colorPrimaryDark"
android:textSize="20sp" />
<Button
android:id="@+id/btn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fontFamily="@font/montserrat_bold"
android:text="Products"
android:layout_marginVertical="10dp"
android:layout_marginHorizontal="20dp"
android:textColor="@color/colorPrimaryDark"
android:textSize="20sp" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/productsRecyclerView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="100dp"
android:layoutAnimation="@anim/layoutanimation"
/>
</LinearLayout>
</androidx.core.widget.NestedScrollView>
代码是
productsRef = FirebaseDatabase.getInstance().getReference().child("products");
recyclerView = (RecyclerView) root.findViewById(R.id.productsRecyclerView);
btn= (Button) root.findViewById(R.id.btn);
layoutManager = new LinearLayoutManager(getActivity());
recyclerView.setLayoutManager(layoutManager);
recyclerView.setHasFixedSize(true);
FirebaseRecyclerOptions<Products> options=
new FirebaseRecyclerOptions.Builder<Products>()
.setQuery(productsRef, Products.class)
.build();
adapter = new FirebaseRecyclerAdapter<Products, ProductViewHolder>(options) {
@Override
protected void onBindViewHolder(@NonNull final ProductViewHolder holder, final int position, @NonNull final Products model) {
holder.productNameTv.setText(model.getName());
Picasso.get().load(model.getImageurl()).fit().into(holder.productImageIv);
holder.cardcontainer.setAnimation(AnimationUtils.loadAnimation(getActivity(),R.anim.cardviewanimation));
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(getActivity(), ProductDetailsActivity.class);
intent.putExtra("imageurl",model.getImageurl());
intent.putExtra("name",model.getName());
intent.putExtra("desc",model.getDesc());
intent.putExtra("mrp",model.getMrp());
intent.putExtra("availability",model.getAvailability());
intent.putExtra("pid",model.getPid());
startActivity(intent);
}
});
}
@NonNull
@Override
public ProductViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.product_items_layout, parent, false);
ProductViewHolder holder = new ProductViewHolder(view);
return holder;
}
};
recyclerView.setAdapter(adapter);
adapter.startListening();
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Query query = productsRef.orderByChild("category").equalTo(catName);
FirebaseRecyclerOptions<Products> newOptions=
new FirebaseRecyclerOptions.Builder<Products>()
.setQuery(query, Products.class)
.build();
adapter.updateOptions(newOptions);
);
recylerview 布局是
<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="120dp"
android:layout_marginVertical="10dp"
app:cardCornerRadius="2dp"
app:cardElevation="5dp"
android:layout_marginHorizontal="20dp"
android:id="@+id/cardcontainer"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
>
<ImageView
android:id="@+id/productImageIv"
android:layout_width="100dp"
android:layout_height="match_parent"
android:src="@drawable/ic_topsym"
android:layout_margin="10dp"
>
</ImageView>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<TextView
android:id="@+id/productNameTv"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:textSize="20sp"
android:text="@string/welcome"
android:textColor="@color/colorBlack"
android:fontFamily="@font/arimo_bold"
android:padding="20dp">
</TextView>
</RelativeLayout>
</LinearLayout>
</androidx.cardview.widget.CardView>
提前致谢。
请使用滑动刷新组件或在您的适配器中使用notifiedDatasetChanged()
我在 fragment.it 中的 nestedscrollview 中创建了 firebase recyclerview well.but 当我在 firebase recyclerview 中使用 updateoptions 时,recyclerview 不工作。 我不知道如何解决这个问题。
最初创建的片段加载了来自 firebase.the recyclerview 的项目当我点击按钮更新选项时不起作用
这是我的 firebaserecyclerview
<?xml version="1.0" encoding="utf-8"?>
<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/fragment_bg"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="20dp"
android:orientation="vertical"
android:layout_marginBottom="50dp"
>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fontFamily="@font/montserrat"
android:text="Hi, Aashik"
android:textColor="@color/colorPrimary"
android:layout_marginHorizontal="20dp"
android:textSize="25dp" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fontFamily="@font/montserrat_bold"
android:layout_marginHorizontal="20dp"
android:text="Welcome Back"
android:textColor="@color/colorPrimary"
android:textSize="30dp" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="20dp"
android:fontFamily="@font/montserrat_bold"
android:text="Category"
android:textColor="@color/colorPrimaryDark"
android:textSize="20sp" />
<Button
android:id="@+id/btn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fontFamily="@font/montserrat_bold"
android:text="Products"
android:layout_marginVertical="10dp"
android:layout_marginHorizontal="20dp"
android:textColor="@color/colorPrimaryDark"
android:textSize="20sp" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/productsRecyclerView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="100dp"
android:layoutAnimation="@anim/layoutanimation"
/>
</LinearLayout>
</androidx.core.widget.NestedScrollView>
代码是
productsRef = FirebaseDatabase.getInstance().getReference().child("products");
recyclerView = (RecyclerView) root.findViewById(R.id.productsRecyclerView);
btn= (Button) root.findViewById(R.id.btn);
layoutManager = new LinearLayoutManager(getActivity());
recyclerView.setLayoutManager(layoutManager);
recyclerView.setHasFixedSize(true);
FirebaseRecyclerOptions<Products> options=
new FirebaseRecyclerOptions.Builder<Products>()
.setQuery(productsRef, Products.class)
.build();
adapter = new FirebaseRecyclerAdapter<Products, ProductViewHolder>(options) {
@Override
protected void onBindViewHolder(@NonNull final ProductViewHolder holder, final int position, @NonNull final Products model) {
holder.productNameTv.setText(model.getName());
Picasso.get().load(model.getImageurl()).fit().into(holder.productImageIv);
holder.cardcontainer.setAnimation(AnimationUtils.loadAnimation(getActivity(),R.anim.cardviewanimation));
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(getActivity(), ProductDetailsActivity.class);
intent.putExtra("imageurl",model.getImageurl());
intent.putExtra("name",model.getName());
intent.putExtra("desc",model.getDesc());
intent.putExtra("mrp",model.getMrp());
intent.putExtra("availability",model.getAvailability());
intent.putExtra("pid",model.getPid());
startActivity(intent);
}
});
}
@NonNull
@Override
public ProductViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.product_items_layout, parent, false);
ProductViewHolder holder = new ProductViewHolder(view);
return holder;
}
};
recyclerView.setAdapter(adapter);
adapter.startListening();
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Query query = productsRef.orderByChild("category").equalTo(catName);
FirebaseRecyclerOptions<Products> newOptions=
new FirebaseRecyclerOptions.Builder<Products>()
.setQuery(query, Products.class)
.build();
adapter.updateOptions(newOptions);
);
recylerview 布局是
<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="120dp"
android:layout_marginVertical="10dp"
app:cardCornerRadius="2dp"
app:cardElevation="5dp"
android:layout_marginHorizontal="20dp"
android:id="@+id/cardcontainer"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
>
<ImageView
android:id="@+id/productImageIv"
android:layout_width="100dp"
android:layout_height="match_parent"
android:src="@drawable/ic_topsym"
android:layout_margin="10dp"
>
</ImageView>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<TextView
android:id="@+id/productNameTv"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:textSize="20sp"
android:text="@string/welcome"
android:textColor="@color/colorBlack"
android:fontFamily="@font/arimo_bold"
android:padding="20dp">
</TextView>
</RelativeLayout>
</LinearLayout>
</androidx.cardview.widget.CardView>
提前致谢。
请使用滑动刷新组件或在您的适配器中使用notifiedDatasetChanged()