有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在Android中用firebase数据动态填充表行

所以我想从firebase数据库动态地将数据添加到我的表中 这是我的数据库的图像。我想用数据库中的数据填充我的表行 表中的产品名称应为royal和royal Glight,表中的阴影名称应为数据库中阴影部分下的名称,如rb3、白银、黄金,但黄金和白银不能属于royal产品名称

Firebase Database

这是我的Java代码

package com.example.stockmanagementsystem;



public class PurchaseReport extends AppCompatActivity {

ArrayList<String> shadeNameList;
ArrayList<String>  productNameList;
ArrayList<String> litreList = new ArrayList<>();
TableLayout tableLayout;
TableRow tableRow;
DatabaseReference databaseReference,databaseReference1;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_purchase_report);
    tableLayout = findViewById(R.id.purchase_report_layout);

    //root instance
    databaseReference  = FirebaseDatabase.getInstance().getReference();

    productNameList = new ArrayList<>();
    shadeNameList= new ArrayList<>();

    productList();

    final Handler handler = new Handler();
    final int delay = 1000;

    handler.postDelayed(new Runnable() {
        @Override
        public void run() {

            if(!productNameList.isEmpty()){

                for (int i=0 ; i<productNameList.size();i++){

                    databaseReference1  = FirebaseDatabase.getInstance().
                            getReference(productNameList.get(i)).child("shade");

                    shadeList();

                    if(!shadeNameList.isEmpty()) {
                        for (int j = 0; j < shadeNameList.size(); j++) {

                            final int jNum = j;
                            tableRow = new TableRow(PurchaseReport.this);

                            TextView v1 = new TextView(PurchaseReport.this);
                            v1.setText(String.valueOf(i + 1));
                            v1.setTextColor(Color.RED);
                            v1.setBackgroundResource(R.drawable.border_row);
                            v1.setGravity(Gravity.CENTER);
                            v1.setTextSize(18);
                            tableRow.addView(v1);

                            TextView v2 = new TextView(PurchaseReport.this);
                            v2.setText("27/12/2020");
                            v2.setTextColor(Color.RED);
                            v2.setBackgroundResource(R.drawable.border_row);
                            v2.setGravity(Gravity.CENTER);
                            v2.setTextSize(18);
                            tableRow.addView(v2);

                            TextView v3 = new TextView(PurchaseReport.this);
                            v3.setText(productNameList.get(i));
                            v3.setTextColor(Color.RED);
                            v3.setBackgroundResource(R.drawable.border_row);
                            v3.setGravity(Gravity.CENTER);
                            v3.setTextSize(18);
                            tableRow.addView(v3);

                            final TextView v4 = new TextView(PurchaseReport.this);

                            databaseReference1.addListenerForSingleValueEvent(new ValueEventListener() {
                                @Override
                                public void onDataChange(@NonNull DataSnapshot snapshot) {

                                    if(snapshot.hasChild(shadeNameList.get(jNum))){

                                        v4.setText(shadeNameList.get(jNum));
                                        v4.setTextColor(Color.RED);
                                        v4.setBackgroundResource(R.drawable.border_row);
                                        v4.setGravity(Gravity.CENTER);
                                        v4.setTextSize(18);
                                        Log.i("V4", String.valueOf(v4.getText()));
                                    }
                                }

                                @Override
                                public void onCancelled(@NonNull DatabaseError error) {
                                }
                            });

                            tableRow.addView(v4);

                            TextView v5 = new TextView(PurchaseReport.this);
                            v5.setText("2 Litre");
                            v5.setTextColor(Color.RED);
                            v5.setBackgroundResource(R.drawable.border_row);
                            v5.setGravity(Gravity.CENTER);
                            v5.setTextSize(18);
                            tableRow.addView(v5);

                            TextView v6 = new TextView(PurchaseReport.this);
                            v6.setText("2");
                            v6.setTextColor(Color.RED);
                            v6.setBackgroundResource(R.drawable.border_row);
                            v6.setGravity(Gravity.CENTER);
                            v6.setTextSize(18);
                            tableRow.addView(v6);

                            TextView v7 = new TextView(PurchaseReport.this);
                            v7.setText("12");
                            v7.setTextColor(Color.RED);
                            v7.setBackgroundResource(R.drawable.border_row);
                            v7.setGravity(Gravity.CENTER);
                            v7.setTextSize(18);
                            tableRow.addView(v7);

                            TextView v8 = new TextView(PurchaseReport.this);
                            v8.setText("123");
                            v8.setTextColor(Color.RED);
                            v8.setBackgroundResource(R.drawable.border_row);
                            v8.setGravity(Gravity.CENTER);
                            v8.setTextSize(18);
                            tableRow.addView(v8);
                            tableLayout.addView(tableRow);
                        }
                    }else{

                        handler.postDelayed(this,delay);
                    }

                }

            }else{
                handler.postDelayed(this,delay);
            }
        }
    },delay);

}

private void shadeList() {

    ValueEventListener eventListener = new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {

            for(DataSnapshot ds : dataSnapshot.getChildren()) {
                //adding name to the arrayList
                shadeNameList.add(ds.getKey());
            }
        }
        @Override
        public void onCancelled(DatabaseError databaseError) {
            Log.d("TAG", databaseError.getMessage());
        }
    };
    databaseReference1.addListenerForSingleValueEvent(eventListener);
}

private void productList(){

    ValueEventListener eventListener = new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {

            for(DataSnapshot ds : dataSnapshot.getChildren()) {
                //adding name to the arrayList
                productNameList.add(ds.getKey());
            }
        }
        @Override
        public void onCancelled(DatabaseError databaseError) {
            Log.d("TAG", databaseError.getMessage());
        }
    };
    databaseReference.addListenerForSingleValueEvent(eventListener);
}

}

我想要的输出是

Desired Output

我得到的输出

Output

任何帮助都将不胜感激


共 (1) 个答案

  1. # 1 楼答案

    对于动态内容,请使用RecycleView和带有ViewHolder的RecycleWebAdapter