简体   繁体   中英

Repeated values using TextView in TableRow?

I'm facing a problem when I add values in firebase and tried to read and view these valued in tableRow using textView, but I get repeated values and when I navigate between fragments and come back to this fragment the repeated values disappear, how can I solve this problem? how can I view these values without the repeated values?

this is the code

public class RoomFragment extends Fragment {
    TableLayout stk;
    TableRow tbrow0;
    Context thiscontext;
    Button addNewRoom;
    ArrayList<Rooms> rooms;
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        thiscontext = container.getContext();
        // Inflate the layout for this fragment
        View rootView = inflater.inflate(R.layout.fragment_room,
                container, false);
        addNewRoom = (Button) rootView.findViewById(R.id.addNewRoom);
        rooms = new ArrayList<Rooms>();


/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        //Add Room
        addNewRoom.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                updateDetail();
            }
        });
        return rootView;
    }

    public void updateDetail() {
        Intent intent = new Intent(getActivity(), add_room.class);
        startActivity(intent);
    }


    @Override
    //
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        addTable();
    }

    // This event is triggered soon after onCreateView().
    // Any view setup should occur here.  E.g., view lookups and attaching view listeners.
    @Override
    public void onViewCreated(View view, Bundle savedInstanceState) {
        // Setup any handles to view objects here
        // EditText etFoo = (EditText) view.findViewById(R.id.etFoo);
        stk=(TableLayout)view.findViewById(R.id.table_main);//table layout
    }
     public void addTable(){
         // fetch reference database
         DatabaseReference mDbRef =  FirebaseDatabase.getInstance().getReference().child("Rooms");
         // Read from the database
         mDbRef.addValueEventListener(new ValueEventListener() {
             @Override
             public void onDataChange(DataSnapshot dataSnapshot) {

                 for (DataSnapshot ds : dataSnapshot.getChildren()){
                        // Storing DB values in class
                        Rooms room = ds.getValue(Rooms.class);
                        rooms.add(room);
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                         //Display Room numbers
                         String RNum = ds.child("number").getValue().toString();
                         TableRow tbrow=new TableRow(thiscontext);// row
                         TextView t2v=new TextView(thiscontext);
                         t2v.setText(RNum);
                         t2v.setPadding(0,0,30,10);
                         t2v.setTextColor(Color.parseColor("#2171C1"));
                         t2v.setGravity(Gravity.LEFT);
                         t2v.setTextSize(20);
                         tbrow.addView(t2v);
                         TextView t3v=new TextView(thiscontext);
                         t3v.setText("     ");
                         t3v.setPadding(30,0,30,10);
                         tbrow.addView(t3v);
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                         //Modify a Room
                         ImageView editimg = new ImageView(thiscontext);
                         editimg.setBackgroundResource(R.drawable.ic_edit);
                         editimg.setOnClickListener(new View.OnClickListener() {
                             @Override
                             public void onClick(View v) {
                                 //**Send Room number
                                 Intent intent = new Intent(getActivity(), modify_room.class);
                                 String No = ds.getKey();
                                 intent.putExtra("No", No );
                                 intent.putExtra("number", room.getNumber() );
                                 intent.putExtra("employee", room.getEmployee());
                                 intent.putExtra("status", room.getStatus());
//                                 intent.putExtra("department", room.getDepartment());
//                                 intent.putExtra("type", room.getType());
                                 startActivity(intent);

                             }
                         });
                         tbrow.addView(editimg);
                         TextView t4v=new TextView(thiscontext);
                         t4v.setText("     ");
                         t4v.setPadding(30,0,30,10);
                         tbrow.addView(t4v);

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                         //Delete a Room
                         ImageView deleteimg = new ImageView(thiscontext);
                         deleteimg.setBackgroundResource(R.drawable.ic_delete);

                         deleteimg.setOnClickListener(new View.OnClickListener() {
                             @Override
                             public void onClick(View v) {
//                                         DatabaseReference ref =ds.getRef();
//                                         ref.removeValue();

                                         ds.getRef().removeValue();
                                         stk.removeView(tbrow);
                                         Toast.makeText(getContext(),"The Room has been deleted successfully from the system",Toast.LENGTH_LONG).show();
                             }
                         });
                         tbrow.addView(deleteimg);
                         stk.addView(tbrow);

                      }


             }
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
             @Override
             public void onCancelled(DatabaseError error) {
                 // Failed to read value
                 //Log.w(TAG, "Failed to read value.", error.toException());
             }
         });
    }



}

You can just clear the list of rooms for each call of onDataChange() to guarantee non-duplicate values.

 mDbRef.addValueEventListener(new ValueEventListener() {
     @Override
     public void onDataChange(DataSnapshot dataSnapshot) {
         
         rooms.clear(); // Clearing the list
         
         for (DataSnapshot ds : dataSnapshot.getChildren()){
                // Storing DB values in class
                Rooms room = ds.getValue(Rooms.class);
                rooms.add(room);

// rest of code

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM