显示和隐藏的TextView对象中回收视图

问题描述 投票:0回答:1

我有一个应用程序从火力地堡,并在RecyclerView显示它会下载数据,并能正常工作。我想要做的是显示或当某些条件适用于XML隐藏输入元素。的“是”或“否”的条件从火力地堡下载。

这类型的作品,但只有隐藏在RecyclerView上市的第一项TextView的。我如何得到它适用于所有列出的项目?我会添加代码和截图。

As you can see, the 'quantity' input field is hidden only on the first item display

码:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_menus);
    setUpRecyclerView();
    }

    private void setUpRecyclerView() {
    // get menu type from MenuSelectListActivity
    selectedMenu = getIntent().getStringExtra("myMenuSelected");

    //get Firestore db and use selected menu for listing
    FirebaseFirestore db = FirebaseFirestore.getInstance();
    CollectionReference notebookRef = db.collection(selectedMenu);

    FirestoreRecyclerOptions<NoteAdapter> options = new    FirestoreRecyclerOptions.Builder<NoteAdapter>()
            .setQuery(query, NoteAdapter.class)
            .build();

    adapter = new Note(options);

    final RecyclerView recyclerView = findViewById(R.id.recycler_view);

    recyclerView.setHasFixedSize(true);
    recyclerView.setLayoutManager(new LinearLayoutManager(this));
    recyclerView.setAdapter(adapter);

    DocumentReference docRef = db.collection(“delivery    status”).document(“****************”);
    docRef.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
        @Override
        public void onComplete(@NonNull Task<DocumentSnapshot> task) {
            if (task.isSuccessful()) {
                DocumentSnapshot document = task.getResult();

                if (document.exists()) {
                    String myDeliveryStatus = document.getString("deliverystatus");

                  // if delivery status yes then allow the order to be made
                    if (myDeliveryStatus.equals("yes")) {

                        // show quantity input TextView
                            TextView text_quantity = (TextView) findViewById(R.id.text_view_quantity);

                            //Toggle
                            if (text_quantity.getVisibility() == View.INVISIBLE)
                                text_quantity.setVisibility(View.VISIBLE);
                            else
                                text_quantity.setVisibility(View.VISIBLE);

                        adapter.setOnItemClickListener(new Note.OnItemClickListener() {
                            @Override
                            public void onItemClick(DocumentSnapshot documentSnapshot, int position) {
                                String myTitle = ((TextView) recyclerView.findViewHolderForAdapterPosition(position).itemView.findViewById(R.id.text_view_title)).getText().toString();
                                String myPrice = ((TextView) recyclerView.findViewHolderForAdapterPosition(position).itemView.findViewById(R.id.text_view_price)).getText().toString();
                                String myNumberOrdered = ((TextView) recyclerView.findViewHolderForAdapterPosition(position).itemView.findViewById(R.id.text_view_quantity)).getText().toString();

                       ***** do various calculations on the data downloaded from Firebase. Not relevant to this question so not included

                    }
             //   if no do nothing
                   else if (myDeliveryStatus.equals("no")) {
                        TextView text_quantity = (TextView) findViewById(R.id.text_view_quantity);

                        //Toggle to hide TextView
                        if (text_quantity.getVisibility() == View.VISIBLE)
                            text_quantity.setVisibility(View.INVISIBLE);
                        else
                            text_quantity.setVisibility(View.INVISIBLE);
                   }
                } else {
                    //  Log.d(TAG, "No such document");
                }
            } else {
                // Log.d(TAG, "get failed with ", task.getException());
            }
        }

    });
}

代码适配器:

 public class NoteAdapter {
private String title;
private String description;
private double price;

private int priority;

private int quantity;

private String status;

public NoteAdapter() {
    //empty constructor needed

}

public NoteAdapter(String title, String description, double price, int priority, int quantity) {

    this.title = title;
    this.description = description;
    this.price = price;

    this.priority = priority;
    this.quantity = quantity;
    this.status = status;
}

public String getTitle() {
    return title;
}

public String getDescription() {
    return description;
}


public double getPrice() {
    return price;
}

public int getPriority() {
    return priority;
}

public int getQuantity() {
    return quantity;
}

public String getStatus() {
    return status;
}

}

android android-recyclerview show-hide
1个回答
0
投票

首先,你正在做某种错误的初始化RecyclerviewAdapter。其使用的是因为这是一个公正的模型或类适配器。请一定要看这个answer并更改根据您的代码结构这个,那么你应该做BindViewHolder这一步

  adapter = new FirestoreRecyclerAdapter<NoteAdapter, ProductViewHolder>(options) {
        @Override
        protected void onBindViewHolder(@NonNull holder productViewHolder, int position, @NonNull NoteAdapter productModel) {
            //here you can check the Yes or No like this
            if (poductModel.getStatus.equalsIgnoreCase("no")){
               if (text_quantity.getVisibility() == View.VISIBLE)
                            text_quantity.setVisibility(View.INVISIBLE);
                        else
                            text_quantity.setVisibility(View.INVISIBLE);
               }
        }

        @NonNull
        @Override
        public ProductViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
            View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_product, parent, false);
            return new ProductViewHolder(view);
        }
    };
© www.soinside.com 2019 - 2024. All rights reserved.