Android RecyclerView按特定详细信息查看订单
我正在制作一个类似甜点订单的应用程序,我想根据订单状态对订单进行排序,如已下订单(0)、已发货订单(1)、已上路订单(2)和已发货订单(3)。如果订单状态为3(已交付),我需要在回收视图的底部显示该订单,目前我正在使用堆栈格式查看订单,可以吗Android RecyclerView按特定详细信息查看订单,android,Android,我正在制作一个类似甜点订单的应用程序,我想根据订单状态对订单进行排序,如已下订单(0)、已发货订单(1)、已上路订单(2)和已发货订单(3)。如果订单状态为3(已交付),我需要在回收视图的底部显示该订单,目前我正在使用堆栈格式查看订单,可以吗 private void loadOrders(final String phone) { adapter = new FirebaseRecyclerAdapter<Request, OrderViewHolder>(
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(电话)
)
...
通过使用statusrequests.orderByChild(“status”).equalTo(phone)
对数据进行排序,您的列表将显示具有状态序列的订单。当然,通过此更改,您的列表现在不会按电话号码排序。如果您想按电话和状态进行排序,请提供更多代码
选项2:如果您可以在创建适配器之前操作firebase中的数据,则可以将结果拆分为两个列表,一个状态为0,1,2,另一个状态为3。然后,将2列表逐个添加到适配器中,并将适配器连接到recycler视图
在Recyclerview的底部,正如Amazon/Flipkart交付的订单显示在底部一样 所以在这种情况下,你可以选择2。您可以对firebase执行2个查询:
.orderByChild(“电话”).equalTo(电话)
.orderByChild(“电话”).equalTo(电话)
为了进一步优化它,您可以只查询一次,然后将列表拆分为上面提到的两个列表,这样就不会查询两次。如果我理解正确,您要做的是按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(电话)
)
...
通过使用statusrequests.orderByChild(“status”).equalTo(phone)
对数据进行排序,您的列表将显示具有状态序列的订单。当然,通过此更改,您的列表现在不会按电话号码排序。如果您想按电话和状态进行排序,请提供更多代码
选项2:如果您可以从