Как получить идентификатор документа позиции переработчика Просмотр товара? - PullRequest
0 голосов
/ 09 сентября 2018

Я использовал библиотеку firebaseUI для заполнения представления переработчика с использованием базы данных firestore. когда я пытаюсь получить идентификатор документа , когда я нажимаю на элемент просмотра переработчика, это было похоже на

 DocumentSnapshot snapshot = getSnapshots()
              .getSnapshot(holder.getAdapterPosition());
          final String countryName = snapshot.getId();

Я пробовал этот код, но getSnapshots() отображается красным словом и nt workng внутри onbindeviewolder, поэтому я попробовал это, но тоже не работает

DocumentReference aa=firebaseFirestore.collection("MainCategories").document(String.valueOf(SS));
            String aaa=aa.getId();

Так есть ли способ получить идентификатор документа, потому что код выше здесь не работает

 private class CategoriesAdapter extends RecyclerView.Adapter<AllCategoriesViewHolder> {
         private List<mainCategroies> categorylist;

         CategoriesAdapter(List<mainCategroies> categorylist) {
              this.categorylist = categorylist;

         }

         @NonNull
         @Override
         public AllCategoriesViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
              View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.cardview_maincategory, parent, false);
              return new AllCategoriesViewHolder(view);
         }

         @Override
         public void onBindViewHolder(@NonNull final AllCategoriesViewHolder holder, int position) {
              final String categoryName = categorylist.get(position).getCategory_Name();
              holder.setCategory_Name(categoryName);
              String d = categorylist.get(position).getImageUrl();
              holder.setImageUrl(d);

              MainActivityProgress.setVisibility(View.GONE);
              holder.view.setOnClickListener(new View.OnClickListener() {
              @Override
              public void onClick(View v) {



              }
              });

         }

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

держатель класса

закрытый класс AllCategoriesViewHolder расширяет RecyclerView.ViewHolder { частный вид;

 public AllCategoriesViewHolder(final View itemView) {
      super(itemView);
      view = itemView;

 }

 void setCategory_Name(String category_Name) {
      TextView names = view.findViewById(R.id.CategoryName);
      names.setText(category_Name);

 }


 void setImageUrl(String imageUrl) {
      ImageView imageView = view.findViewById(R.id.MainCat_CardViewImage);
      Picasso.get()
     .load(imageUrl)
     .fit()
     .into(imageView);
 }
 }

и модель класса

public class CountryItem {
     private String CountryName;
public CountryItem(){

}
     public CountryItem(String countryName) {
     CountryName = countryName;
     }

     public String getCountryName() {
     return CountryName;
     }

     public void setCountryName(String countryName) {
     CountryName = countryName;
     }
}

1 Ответ

0 голосов
/ 09 сентября 2018

Метод, которым вы пытаетесь получить идентификатор элемента, т. Е.

DocumentSnapshot snapshot = getSnapshots().getSnapshot(holder.getAdapterPosition());
final String countryName = snapshot.getId();

будет работать только в случае FirestoreRecyclerAdapter. Поскольку вы используете RecyclerView.Adapter, вы должны добавить uid в свой класс Model, а затем получить его.

CountryItem.class

public class CountryItem {
    private String CountryName;
    private String uid;
   //add getters and setters
}

А при извлечении данных из пожарного магазина добавьте поле uid к вашему объекту. Я предполагаю, что вы используете запрос для этого, то это будет выглядеть так: -

Query query = firestore.collection("Collection").orderBy("CountryName",Query.Direction.ASCENDING);

query.addSnapshotListener(this, new EventListener<QuerySnapshot>() {
    @Override
    public void onEvent(QuerySnapshot documentSnapshots, FirebaseFirestoreException e) {
        for(DocumentSnapshot documentSnapshot: documentSnapshots) {
            CountryItem countryItem = documentSnapshot.toObject(CountryItem.class);

             countryItem.setuid(documentSnapshot.getId().toString());
             countryItemList.add(countryItem);
        }
    }

});

И onClick предмета, который вы можете получить и передать своему методу: -

holder.view.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {

        String uid = categorylist.get(position).getUid();

     }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...