我必须充值活动才能显示自定义适配器 [Andoid Studio]

问题描述

我有一个 Activity 问题,它向我展示了一个带有自定义适配器的简单列表视图。我每次都为活动充值以从 Firebase 数据库获取数据,第一次打开活动时这是空的。我是 Android Studio 的菜鸟,所以请不要杀了我。

这是我的自定义适配器:

public class SpesaAdapter2 extends BaseAdapter {

    private Context context;
    private LayoutInflater inflater;
    private String[] array_oggetto;
    private int[] array_quantita;
    private String[] array_id;


    private FirebaseFirestore db;



    public SpesaAdapter2(@NonNull Context c,String[] array_oggetto,int[] array_quantita,String[] array_id){
        context = c;
        this.array_oggetto = array_oggetto;
        this.array_quantita = array_quantita;
        this.array_id = array_id;

        db = FirebaseFirestore.getInstance();
    }



    @Override
    public int getCount() {
        return array_oggetto.length;
    }

    @Override
    public Object getItem(int position) {
        return null;
    }

    @Override
    public long getItemId(int position) {
        return 0;
    }

    @NonNull
    @Override
    public View getView(int position,@Nullable View convertView,@NonNull ViewGroup parent) {
        if(inflater == null){
            inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        }
        if(convertView == null){
            convertView = inflater.inflate(R.layout.list_layout,null);
        }
        TextView oggetto = convertView.findViewById(R.id.oggetto);
        TextView quantita = convertView.findViewById(R.id.quantità);
        Button delete = convertView.findViewById(R.id.delete);
        ImageView img = convertView.findViewById(R.id.img);

                oggetto.setText(array_oggetto[position]);
                quantita.setText(String.valueOf(array_quantita[position]));







        delete.setonClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //Toast.makeText(context,String.valueOf(position +"," + array_id[position]),Toast.LENGTH_SHORT).show();
                if (array_id[position] != null) {
                    buttonRemoveFromDB(position);

                } else {
                    Toast.makeText(context,"IMPOSSIBILE ELIMINARE",Toast.LENGTH_SHORT).show();
                }
            }
        });


        return convertView;
    }

    public void buttonRemoveFromDB(int position){
        db.collection("Spesa").document(array_id[position]).delete().addOnCompleteListener(new OnCompleteListener<Void>() {
            @Override
            public void onComplete(@NonNull Task<Void> task) {
                if(task.isSuccessful() || array_id[position] != null){
                    Toast.makeText(context,"ELIMINAZIONE COMPLETATA",Toast.LENGTH_SHORT).show();

                } else {
                    Toast.makeText(context,Toast.LENGTH_SHORT).show();
                }
            }
        });
        }




}

这是我的活动:


public class list_activity extends AppCompatActivity {
    private ListView listView;
    private SpesaAdapter2 spesaAdapter2;

    private FirebaseFirestore db;
    private Dialog dialog;

    private Spesa spesa;
    private static String[] array_oggetto = {};
    private static int[] array_quantita = {};
    private static String[] array_id = {};

    private List<String> list_oggetto;
    private List<Integer> list_quantità;
    private List<String> list_id;
    private List<Spesa> list_spesa;



    private DatabaseReference databasereference;


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

        readFromDB2();



        FloatingActionButton fab = findViewById(R.id.fab);
        fab.setonClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                show_Allert_Dialog();




            }
        });



    }

    @Override
    protected void onStart() {
        super.onStart();
        spesaAdapter2 = new SpesaAdapter2(list_activity.this,array_oggetto,array_quantita,array_id);

        spesaAdapter2.notifyDataSetChanged();
        listView.setAdapter(spesaAdapter2);

    }

    @Override
    protected void onResume() {
        super.onResume();
    }

    private  void UI(){


        array_oggetto = new String[15];
        array_quantita = new int[15];
        array_id = new String[15];



        db = FirebaseFirestore.getInstance();



        Button delete = findViewById(R.id.delete);



        listView = findViewById(R.id.list_view);

    }

    private void save_To_DB(String oggetto,String quantita,int photo_id){

        HashMap<String,Object> spesa = new HashMap<>();

        spesa.put("Oggetto",oggetto);
        spesa.put("Quantità",quantita);
        spesa.put("Photo",String.valueOf(R.drawable.home_black_18dp));

        db.collection("Spesa").document().set(spesa);
        dialog.dismiss();


    }
    private void show_Allert_Dialog(){
        dialog = new Dialog(this);


        dialog.setContentView(R.layout.dialog_spesa);
        EditText oggetto = dialog.findViewById(R.id.spesa_edit_text_oggetto);
        EditText quantita = dialog.findViewById(R.id.spesa_edit_text_quantita);
        Button positive = dialog.findViewById(R.id.dialog_button_aggiungi);
        Button negative = dialog.findViewById(R.id.dialog_button_annulla);
    
        positive.setonClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(oggetto.getText().toString().isEmpty() || quantita.getText().toString().isEmpty()) {
                    Toast.makeText(list_activity.this,"Inserisci dati",Toast.LENGTH_SHORT).show();
                }
                else {
                    Spesa spesa = new Spesa(oggetto.getText().toString(),Integer.parseInt(quantita.getText().toString()),String.valueOf(R.drawable.ic_baseline_home_24),null);
                    save_To_DB(oggetto.getText().toString(),quantita.getText().toString(),R.drawable.home_black_18dp);
                    readFromDB2();

                }
                }


        });
        negative.setonClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                dialog.dismiss();
            }
        });



        dialog.show();

    }


    private void readFromDB2(){
        db.collection("Spesa").addSnapshotListener(new EventListener<QuerySnapshot>() {
            @Override
            public void onEvent(@Nullable QuerySnapshot value,@Nullable FirebaseFirestoreException error) {
               int i = 0;

                     for (DocumentSnapshot snapshot : value){
                         array_oggetto[i] = snapshot.getString("Oggetto");
                         array_quantita[i]= Integer.parseInt(snapshot.getString("Quantità"));
                         array_id[i] = snapshot.getId();

                         Log.d("list_activity",array_oggetto[i]);

                         i++;


                     }

            }
        });

    }



    }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...