Как я могу подключить утилиту восстановления к базе данных Firebase, вставлять, обновлять и удалять данные - PullRequest
0 голосов
/ 08 ноября 2019

Я создаю приложение, содержащее recyclerview, и добавляю данные в recyclerview arrayList из alertDilog и редактирую, удаляю данные из AlertDilog в соответствии с щелчком пользователя. Это работает правильно, но когда я подключаю свое приложение к firebase Database, мое приложение не работает должным образом.

Адаптер Recyclerview:

public class recyclerviewadapter extends RecyclerView.Adapter<recyclerviewadapter.Viewholder> {
        ArrayList<customitem> datalist;
        vonclick mclick;

        @NonNull
        @Override
        public Viewholder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
            View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.recyclerviewexdesign,parent,false);
            return new Viewholder(v,mclick);
        }

        public recyclerviewadapter(ArrayList<customitem> datalist) {
            this.datalist = datalist;
        }

        @Override
        public void onBindViewHolder(@NonNull Viewholder holder, int position) {
            customitem n = datalist.get(position);
            holder.productname.setText(n.getproductname());


        }

        @Override
        public int getItemCount() {
            return datalist.size();
        }

        public class Viewholder extends RecyclerView.ViewHolder {
            TextView productname;
            public Viewholder(@NonNull View itemView, final vonclick listener) {
                super(itemView);
                productname = itemView.findViewById(R.id.titleid);

                itemView.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        if (listener!=null){
                            int possition =getAdapterPosition();
                            if (possition !=RecyclerView.NO_POSITION){
                                listener.cclick(possition);

                            }

                        }


                    }
                });
            }
        }
        public interface vonclick{
            void cclick(int possition);

        }
        public void recyclerviewonclicl(vonclick possition){
            mclick=possition;
        }
    }

и класс элемента:

public class customitem {
    String productname,size,price,box;
    int kg;
    public customitem(){

    }

    public customitem(String productname, String size,String price,String box,int kg) {
        this.productname = productname;
        this.size = size;
        this.price = price;
        this.box = box;
        this.kg = kg;
    }

    public String getproductname() {
        return productname;
    }

    public void setproductname(String productname) {
        this.productname = productname;
    }

    public String getsize() {
        return size;
    }

    public void setsize(String size) {
        this.size = size;
    }

    public String getPrice() {
        return price;
    }

    public void setPrice(String price) {
        this.price = price;
    }

    public String getBox() {
        return box;
    }

    public void setBox(String box) {
        this.box = box;
    }

    public int getKg() {
        return kg;
    }

    public void setKg(int kg) {
        this.kg = kg;
    }
}

последний основной класс:

public class addproduct extends AppCompatActivity {
    RecyclerView recyclerView;
    ArrayList<customitem> datalist =new ArrayList<customitem>();
    FirebaseDatabase mdatabase;
    DatabaseReference mreference;

    EditText productname,price,size,b2;
    Spinner sizespinner;
    Button okbutton;
    View mview;
    ImageView cancel;
    AlertDialog d;
    AlertDialog.Builder alert;
    recyclerviewadapter adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_addproduct);
        getSupportActionBar().setTitle("Add product");
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        mdatabase = FirebaseDatabase.getInstance();
        //?????????????????????? my firebase referance ????????????
        mreference = mdatabase.getReference().child("product");
        mreference.keepSynced(true);



        recyclerView = findViewById(R.id.recyclerviewid);



        buildrecyclerview();

        //mreference.child("product").setValue(datalist);






    }

    public void buildrecyclerview(){
        adapter = new recyclerviewadapter(datalist);
        recyclerView.setHasFixedSize(true);
        recyclerView.setLayoutManager(new GridLayoutManager(this,4));
        recyclerView.setAdapter(adapter);
        mreference.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                for (DataSnapshot dataSnapshot1:dataSnapshot.getChildren()){
                    customitem j =dataSnapshot1.getValue(customitem.class);
                    datalist.add(j);

                }
                adapter.notifyDataSetChanged();

            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {

            }
        });

        adapter.recyclerviewonclicl(new recyclerviewadapter.vonclick() {
            @Override
            public void cclick(final int possition) {

                //?????????????? alert dilog two for delete and update data ????????????????
                AlertDialog.Builder bl = new AlertDialog.Builder(addproduct.this);
                View v = getLayoutInflater().inflate(R.layout.manageralertdilogtwo,null);
                bl.setView(v);
                d=bl.create();
                d.show();
                final EditText productname2 = v.findViewById(R.id.productname2);
                final EditText size2 = v.findViewById(R.id.packsizeid2);
                final EditText price2 = v.findViewById(R.id.priceid2);
                final EditText box2 = v.findViewById(R.id.Box2);
                Button okbtn = v.findViewById(R.id.okbuttonid2);
                Button dltbtn = v.findViewById(R.id.deleteid);
                ImageView cross =v.findViewById(R.id.cancelid2);
                final Spinner sp =v.findViewById(R.id.spinnerid2);
                //String pn = datalist.get(possition).getproductname();

                productname2.setText(datalist.get(possition).getproductname());
                size2.setText(datalist.get(possition).getsize());
                price2.setText(datalist.get(possition).getPrice());
                box2.setText(datalist.get(possition).getBox());
                sp.setSelection(datalist.get(possition).getKg());
                cross.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        d.dismiss();
                    }
                });
                okbtn.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {

                        //?????????????? update data accroding user selectiong  ??????????????


                       //datalist.get(possition).setproductname(productname2.getText().toString());
                       //datalist.get(possition).setPrice(price2.getText().toString());
                       //datalist.get(possition).setsize(size2.getText().toString());
                       //datalist.get(possition).setBox(box2.getText().toString());
                       //datalist.get(possition).setKg(sp.getSelectedItemPosition());
                       customitem m = new customitem(productname2.getText().toString(),size2.getText().toString()
                       ,price2.getText().toString(),box2.getText().toString(),sp.getSelectedItemPosition());

                       mreference.child(String.valueOf(datalist.get(possition))).setValue(m);

                        d.dismiss();
                    }
                });
                dltbtn.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {

                        //???????????????? delete data from recycler view accroding user selection ???????????
                        //datalist.remove(possition);
                        mreference.child(String.valueOf(datalist.get(possition))).removeValue();

                       // adapter.notifyDataSetChanged();
                        d.dismiss();
                    }
                });




            }
        });

    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {

        getMenuInflater().inflate(R.menu.addproductmenu,menu);
        return true;

    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()){
            case R.id.addproduct:
                buildalert();
                break;
            case R.id.seedetails:
                Intent n  = new Intent(addproduct.this,managermain.class);
                startActivity(n);
                break;

        }
        return super.onOptionsItemSelected(item);
    }
    public void buildalert(){
        //?????? alert dilog one for take data ???????????????
          alert = new AlertDialog.Builder(addproduct.this);
          mview = getLayoutInflater().inflate(R.layout.manageralertalertdilog,null);
          productname = mview.findViewById(R.id.productname);
          price = mview.findViewById(R.id.priceid);
          alert.setCancelable(true);

          size = mview.findViewById(R.id.packsizeid);
          cancel = mview.findViewById(R.id.cancelid);
          sizespinner = mview.findViewById(R.id.spinnerid);
          okbutton = mview.findViewById(R.id.okbuttonid);
          b2 = mview.findViewById(R.id.Box);
          alert.setView(mview);


        final AlertDialog dl = alert.create();
        dl.show();
        cancel.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                dl.dismiss();
            }
        });
        okbutton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (productnamem() && sizem()){
                    //add data from alert dilog


                    String productnm = productname.getText().toString();
                    String pricec = price.getText().toString();

                    String sizee = size.getText().toString();
                    int kg = sizespinner.getSelectedItemPosition();
                    String box= b2.getText().toString();

                  //?? add data in recyclerview from alert dilog ???????????????


                    //datalist.add(new customitem(productnm,sizee,pricec,box,kg));
                    customitem n = new customitem(productnm,sizee,pricec,box,kg);
                    mreference.child(String.valueOf(datalist.size())).setValue(n);


                    //adapter.notifyDataSetChanged();
                    //mreference.setValue(datalist);
                    dl.dismiss();




                }

            }
        });





    }
    public boolean productnamem(){
        if (productname.getText().toString().trim().isEmpty()){
            productname.setError("Please fill it");
            productname.setFocusable(true);
            return false;
        }
        else {
            return true;
        }

    }

    public boolean sizem(){
        if (size.getText().toString().trim().isEmpty()){
            size.setError("Please fill it");
            size.setFocusable(true);
            return false;
        }
        else {
            return true;
        }
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...