Как сделать так, чтобы изделие в утилизаторе поддерживало два макета - PullRequest
0 голосов
/ 03 мая 2020

Я создаю приложение, используя android studio, и я использую вид рециркулятора для отображения элементов, имеющихся на моем складе, но зонд в том, что он отображает элементы, количество которых также упало ниже 0, поэтому я хочу размыть эти элементы, чтобы пользователь не мог получить к ним доступ. У меня есть другой готовый макет, но как его вставить в этот код

Код, который я сейчас использую

void show(){

   FirebaseRecyclerOptions<Items> options = new FirebaseRecyclerOptions.Builder<Items>().setQuery(firebaseDatabase.child("Items").child(categ), Items.class).build();


   FirebaseRecyclerAdapter<Items, UsersViewHolder> firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<Items, NewOrder.UsersViewHolder>(options)
   {

       @Override
       public NewOrder.UsersViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {


           View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.items,parent,false);

           return new NewOrder.UsersViewHolder(view);

       }

       @Override
       protected void onBindViewHolder(NewOrder.UsersViewHolder holder, int position, Items model) {

           holder.setName(model.getName());
           holder.setDescription(model.getDescription());
           holder.setProfilePic(model.getImage());
           holder.setPrice(model.getPrice());


           final String PID = getRef(position).getKey();

           String quant = model.getQuantity().toString();
           Integer qtt = Integer.parseInt(quant);
           if(qtt == 0){

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

                       Toast.makeText(NewOrder.this, "Sorry This Product is out of stock!", Toast.LENGTH_SHORT).show();

                   }
               });

           }else {

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

                       Intent profileIntent = new Intent(NewOrder.this, Item.class);
                       profileIntent.putExtra("Product id", PID);
                       profileIntent.putExtra("Category", categ);
                       startActivity(profileIntent);

                   }
               });
           }
       }

   };

   items.setAdapter(firebaseRecyclerAdapter);
   firebaseRecyclerAdapter.startListening();


   }

public class UsersViewHolder extends RecyclerView.ViewHolder {

    View mview;


    public UsersViewHolder(@NonNull View itemView) {
        super(itemView);

        mview = itemView;
    }


    public void setName(String name) {

        TextView userNameView = mview.findViewById(R.id.name);
        String str = name;

        String cap = str.substring(0, 1).toUpperCase() + str.substring(1);
        userNameView.setText(cap);

    }

    public void setDescription(String description) {

        TextView userStatusView = mview.findViewById(R.id.description);
        userStatusView.setText(description);

    }

    public void setPrice(String price) {

        TextView userStatusView = mview.findViewById(R.id.price);
        userStatusView.setText("₹"+price);

    }

    public void setProfilePic(String profilepic) {






        final CircleImageView image = mview.findViewById(R.id.userSingleImage);


        final StorageReference mImageRef =
                FirebaseStorage.getInstance().getReference("Profile_image/thumbs/" + profilepic + ".jpg");
        final long ONE_MEGABYTE = 1024 * 1024;

        Glide.with(mview)
                .load(mImageRef)
                .into(image);



    }

}

1 Ответ

0 голосов
/ 03 мая 2020

Я бы предложил создать 2 вида в виде элемента (один элемент для вида переработчика). и дайте ему идентификатор.

, после чего вы сможете получить доступ к этому виду в вашем адаптере и проверить состояние каждого элемента. затем вы можете решить, какой вид показывать.

дайте мне знать, если вам нужны дополнительные разъяснения.

...