教程中的代码现在不起作用

时间:2018-08-08 11:47:52

标签: android

我一直在关注youtube上的edmt教程,但是他在该教程上使用的代码现在无法正常工作。所以我决定更改它。

这是我的代码:

public class OrderStatus extends AppCompatActivity {

    public RecyclerView recyclerView;
    public RecyclerView.LayoutManager layoutManager;

    FirebaseRecyclerAdapter<Request,OrderViewHolder> adapter;

    FirebaseDatabase database;
    DatabaseReference requests;

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

        database = FirebaseDatabase.getInstance();


        recyclerView = (RecyclerView)findViewById(R.id.listOrders);
        recyclerView.setHasFixedSize(true);
        layoutManager = new LinearLayoutManager(this);
        recyclerView.setLayoutManager(layoutManager);

        loadOrders(Common.currentUser.getContact());
    }

    private void loadOrders(String contact) {
        Query query = database
                .getInstance()
                .getReference("Requests")
                .orderByChild("phone").equalTo(contact);


        FirebaseRecyclerOptions<Request> options =
                new FirebaseRecyclerOptions.Builder<Request>().setQuery(query,Request.class).build();
        adapter = new FirebaseRecyclerAdapter<Request, OrderViewHolder>(options) {
            @Override
            protected void onBindViewHolder(@NonNull OrderViewHolder holder, int position, @NonNull Request model) {
          holder.txtOrderId.setText(adapter.getRef(position).getKey());
          holder.txtOrderStatus.setText(convertCoteToStatus(model.getStatus()));
          holder.txtOrderAddress.setText(model.getAddress());
          holder.txtOrderPhone.setText(model.getPhone());

            }

            @NonNull
            @Override
            public OrderViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
                return null;
            }
        };
        recyclerView.setAdapter(adapter);
    }

    private String convertCoteToStatus(String status) {
        if (status.equals("0"))
            return "Placed";
        else if (status.equals("1"))
            return "On My Way";
        else
            return "shipped";
    }
}

老实说,我不知道为什么在运行应用程序时订单请求没有显示,我一直在寻找那些在评论部分遇到相同问题的人,但是却一无所获。 这是我一直在观看的教程的链接

https://www.youtube.com/watch?v=C_s2kmRFktw&index=6&list=PLaoF-xhnnrRW4lXuIhNLhgVuYkIlF852V

1 个答案:

答案 0 :(得分:0)

您是否尝试过更改此内容:

@NonNull
            @Override
            public OrderViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
                return null;
            }

对此:

@NonNull
            @Override
            public OrderViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
                View layoutView = LayoutInflater.from(parent.getContext()).inflate(R.layout.in_recycler(whatever yours is), parent, false);
        return new OrderViewHolder(layoutView);
            }

我认为这可能是因为您根本不会膨胀。您目前正在返回null。

但这应该在您的适配器中。我认为这不是您的适配器。将其放在适配器的相关位置。您可能需要再次检查如何实现RecyclerView