Android RecyclerView按特定详细信息查看订单

Android RecyclerView按特定详细信息查看订单,android,Android,我正在制作一个类似甜点订单的应用程序,我想根据订单状态对订单进行排序,如已下订单(0)、已发货订单(1)、已上路订单(2)和已发货订单(3)。如果订单状态为3(已交付),我需要在回收视图的底部显示该订单,目前我正在使用堆栈格式查看订单,可以吗 private void loadOrders(final String phone) { adapter = new FirebaseRecyclerAdapter<Request, OrderViewHolder>(

我正在制作一个类似甜点订单的应用程序,我想根据订单状态对订单进行排序,如已下订单(0)、已发货订单(1)、已上路订单(2)和已发货订单(3)。如果订单状态为3(已交付),我需要在回收视图的底部显示该订单,目前我正在使用堆栈格式查看订单,可以吗

private void loadOrders(final String phone) {

        adapter = new FirebaseRecyclerAdapter<Request, OrderViewHolder>(
                Request.class,
                R.layout.order_layout,
                OrderViewHolder.class,
                requests.orderByChild("phone").equalTo(phone)
        ) {
            @Override
            protected void populateViewHolder(OrderViewHolder orderViewHolder, final Request request, final int i) {

                final String OrderId, OrderPhone, OrderTotal, OrderAddress, OrderComment, OrderUserName, OrderTime, OrderDate;

                OrderId = adapter.getRef(i).getKey();
                OrderPhone = request.getPhone();
                OrderStatus = Common.convertCodeToStatus(request.getStatus());
                OrderTotal = request.getTotal();
                OrderAddress = request.getAddress();
                OrderComment = request.getComment();
                OrderUserName = request.getName();
                OrderTime = request.getTime();
                OrderDate = request.getDate();

                if (request.getStatus().equals("3")){

                    orderViewHolder.orderStatusImage.setImageResource(R.mipmap.cupcake);
                    orderViewHolder.orderStatusImage.setScaleType(ImageView.ScaleType.CENTER_CROP);

                    orderViewHolder.txtOrderStatus.setVisibility(View.GONE);
                    orderViewHolder.txtOrderDate.setVisibility(View.GONE);
                    orderViewHolder.txtOrderTime.setVisibility(View.GONE);

                    orderViewHolder.deliveredStatus.setVisibility(View.VISIBLE);

                }

                orderViewHolder.txtOrderId.setText(String.format("Order Id :  %s",OrderId));
                orderViewHolder.txtOrderStatus.setText(String.format("Order Status :  %s",OrderStatus));
                orderViewHolder.txtOrderTime.setText(String.format("Order Time : %s",OrderTime));
                orderViewHolder.txtOrderDate.setText(String.format("Order Date : %s",OrderDate));

                if (dialog.isShowing()){
                    dialog.dismiss();
                }

                //Prevention for app crash when user clicks
                orderViewHolder.setItemClickListener(new ItemClickListener() {
                    @Override
                    public void onClick(View view, int position, boolean isLongClick) {
                        Intent orderDetail = new Intent(getActivity(), OrderDetail.class);
                        orderDetail.putExtra("OrderId",OrderId)
                                .putExtra("OrderPhone",phone)
                                .putExtra("OrderTotal",OrderTotal)
                                .putExtra("OrderAddress",OrderAddress)
                                .putExtra("OrderComment",OrderComment)
                                .putExtra("OrderUserName",OrderUserName)
                                .putExtra("OrderTime",OrderTime)
                                .putExtra("OrderDate",OrderDate)
                                .putExtra("OrderStatus",request.getStatus());

                        startActivity(orderDetail);
                    }
                });

            }
        };
        adapter.notifyDataSetChanged();
        recyclerView.setAdapter(adapter);
    }
private void loadOrders(最终字符串电话){
适配器=新的FirebaseRecyclerAdapter(
请求类,
R.layout.order_布局,
OrderViewHolder.class,
requests.orderByChild(“电话”).equalTo(电话)
) {
@凌驾
受保护的void populateViewHolder(OrderViewHolder OrderViewHolder,最终请求,最终int i){
最终字符串OrderId、OrderPhone、OrderTotal、OrderAddress、OrderComment、OrderUserName、OrderTime、OrderDate;
OrderId=adapter.getRef(i).getKey();
OrderPhone=request.getPhone();
OrderStatus=Common.convertCodeToStatus(request.getStatus());
OrderTotal=request.getTotal();
OrderAddress=request.getAddress();
OrderComment=request.getComment();
OrderUserName=request.getName();
OrderTime=request.getTime();
OrderDate=request.getDate();
if(request.getStatus()等于(“3”)){
orderViewHolder.orderStatusImage.setImageResource(R.mipmap.cupcake);
orderViewHolder.orderStatusImage.setScaleType(ImageView.ScaleType.CENTER\U裁剪);
orderViewHolder.txtOrderStatus.setVisibility(View.GONE);
orderViewHolder.txtOrderDate.setVisibility(View.GONE);
orderViewHolder.txtOrderTime.setVisibility(View.GONE);
orderViewHolder.deliveredStatus.setVisibility(View.VISIBLE);
}
orderViewHolder.txtOrderId.setText(String.format(“订单Id:%s”,OrderId));
orderViewHolder.txtOrderStatus.setText(String.format(“订单状态:%s”,OrderStatus));
orderViewHolder.txtOrderTime.setText(String.format(“订单时间:%s”,OrderTime));
orderViewHolder.txtOrderDate.setText(String.format(“订单日期:%s”,OrderDate));
if(dialog.isShowing()){
dialog.dismise();
}
//防止用户单击时应用程序崩溃
orderViewHolder.setItemClickListener(新项目ClickListener(){
@凌驾
公共void onClick(视图、int位置、布尔值isLongClick){
Intent orderDetail=新的Intent(getActivity(),orderDetail.class);
orderDetail.putExtra(“OrderId”,OrderId)
.putExtra(“订单电话”,电话)
.putExtra(“OrderTotal”,OrderTotal)
.putExtra(“订单地址”,订单地址)
.putExtra(“OrderComment”,OrderComment)
.putExtra(“OrderUserName”,OrderUserName)
.putExtra(“订单时间”,订单时间)
.putExtra(“订单日期”,订单日期)
.putExtra(“OrderStatus”,request.getStatus());
startActivity(orderDetail);
}
});
}
};
adapter.notifyDataSetChanged();
recyclerView.setAdapter(适配器);
}

如果我理解正确,您要做的是按0、1、2、3顺序排序

选项1:在呈现列表之前对数据进行排序。例如:

...
adapter = new FirebaseRecyclerAdapter<Request, OrderViewHolder>(
                Request.class,
                R.layout.order_layout,
                OrderViewHolder.class,
                requests.orderByChild("status").equalTo(phone)
        )
...
。。。
适配器=新的FirebaseRecyclerAdapter(
请求类,
R.layout.order_布局,
OrderViewHolder.class,
requests.orderByChild(“status”).equalTo(电话)
)
...
通过使用status
requests.orderByChild(“status”).equalTo(phone)
对数据进行排序,您的列表将显示具有状态序列的订单。当然,通过此更改,您的列表现在不会按电话号码排序。如果您想按电话和状态进行排序,请提供更多代码

选项2:如果您可以在创建适配器之前操作firebase中的数据,则可以将结果拆分为两个列表,一个状态为0,1,2,另一个状态为3。然后,将2列表逐个添加到适配器中,并将适配器连接到recycler视图


在Recyclerview的底部,正如Amazon/Flipkart交付的订单显示在底部一样

所以在这种情况下,你可以选择2。您可以对firebase执行2个查询:

  • 状态为0,1,2的查询并保留
    .orderByChild(“电话”).equalTo(电话)
  • 状态为3的查询并保留
    .orderByChild(“电话”).equalTo(电话)
  • 然后将2个列表附加到1个列表中,并创建适配器


    为了进一步优化它,您可以只查询一次,然后将列表拆分为上面提到的两个列表,这样就不会查询两次。

    如果我理解正确,您要做的是按0、1、2、3顺序排序

    选项1:在呈现列表之前对数据进行排序。例如:

    ...
    adapter = new FirebaseRecyclerAdapter<Request, OrderViewHolder>(
                    Request.class,
                    R.layout.order_layout,
                    OrderViewHolder.class,
                    requests.orderByChild("status").equalTo(phone)
            )
    ...
    
    。。。
    适配器=新的FirebaseRecyclerAdapter(
    请求类,
    R.layout.order_布局,
    OrderViewHolder.class,
    requests.orderByChild(“status”).equalTo(电话)
    )
    ...
    
    通过使用status
    requests.orderByChild(“status”).equalTo(phone)
    对数据进行排序,您的列表将显示具有状态序列的订单。当然,通过此更改,您的列表现在不会按电话号码排序。如果您想按电话和状态进行排序,请提供更多代码

    选项2:如果您可以从