Displaying recordstore records in a lwuit list

242 Views Asked by At

I have a LWUIT application that Contains recordStore and recordStore2 RecordStores getRecordData() Method for retrieve all recordStore elements getRecordData2() Method for retrieve all recordStore2 elements

Three forms as the application screens (f , g and ff ) .
g form contains the following widgets a TextField called tf that enables the end user to write a record for either recordStore or recordStore2 RecordStores.

Two radio buttons rb and rb2 A button called addition for adding a record(that written in tf TextField) to recordStore RecordStore when rb radiobutton is chosen , or adding a record to recordStore2 RecordStore when rb2 radiobutton is chosen . Two lists called mylist and mylist2 A button called all When button All is pressed the ff form displayed and show all records of recordstore and recordstore2 RecordStores

the problem that faces me is there are multiplication of records when the mylist or mylist2 displayed

this my class

    import java.util.*;
    import com.sun.lwuit.table.*;
    import com.sun.lwuit.table.DefaultTableModel;
    import javax.microedition.lcdui.*;
    import javax.microedition.midlet.*;
    import javax.microedition.rms.RecordStore;

    import javax.microedition.rms.RecordStoreNotOpenException;
    import javax.microedition.rms .*;
    import com.sun.lwuit.layouts.*;
    import com.sun.lwuit.*;
    import javax.microedition.lcdui.Canvas;

    import com.sun.lwuit.events.*;
    import com.sun.lwuit.plaf.*;
    import javax.microedition.midlet.*;
    import com.sun.lwuit.geom.*;
    import com.sun.lwuit.*;
    import com.sun.lwuit.events.*;

    public class HelloLWUITMidlet3 extends MIDlet implements   Runnable, ActionListener {
         private RecordStore recordStore,recordStore2;


           String team,team2;

     public String [] getRecordData()
    {
        String[] str = null;
        int counter = 0;
        try
        {
            RecordEnumeration enumeration = recordStore.enumerateRecords(null, null, false);
            str = new String[recordStore.getNumRecords()];

            while(enumeration.hasNextElement())
            {
                try
                {
                    str[counter] = (new String(enumeration.nextRecord()));
                    counter ++;
                }
                catch (Exception e)
                {
                    e.printStackTrace();
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return str;
    }
     public String [] getRecordData2()
    {
        String[] str = null;
        int counter = 0;
        try
        {
            RecordEnumeration enumeration = recordStore2.enumerateRecords(null, null, false);
            str = new String[recordStore2.getNumRecords()];

            while(enumeration.hasNextElement())
            {
                try
                {
                    str[counter] = (new String(enumeration.nextRecord()));
                    counter ++;
                }
                catch (Exception e)
                {
                    e.printStackTrace();
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return str;
    }
        public void startApp()

        {

          com.sun.lwuit.Display.init(this);


    int bgColor =0x0066CC;

    final ButtonGroup group = new ButtonGroup();
    final  RadioButton rb = new RadioButton("First Team");
    final  RadioButton rb2 = new RadioButton("Second Team");
    group.add(rb);
    group.add(rb2);
    //TableModel model = new DefaultTableModel(new String[]{"Column 1", "Column 2"});

    final  f1 g = new f1();

     final com.sun.lwuit.List mylist =  new com.sun.lwuit.List();
    final com.sun.lwuit.List mylist2 =  new com.sun.lwuit.List();
    final form6 my = new form6();
     final  com.sun.lwuit.Form f = new com.sun.lwuit.Form("Football");
       f.getStyle().setBgColor(0X99CCFF);

      BoxLayout boxlayout =new BoxLayout(BoxLayout.X_AXIS);

       //  com.sun.lwuit.Command exitCommand = new com.sun.lwuit.Command("????");
       final  Button goals = new Button("See goals");
       final  Button button = new Button("Goals Record");

      final    com.sun.lwuit.TextField tf =new com.sun.lwuit.TextField();



        final    com.sun.lwuit.TextField  txtfield5 =new com.sun.lwuit.TextField();

      final    com.sun.lwuit.TextField  txtfield6 =new com.sun.lwuit.TextField();



    final Button addition = new Button("Add Goals");

    final Button All = new Button("All Goals");

    addition.getStyle().setBgColor(0X0066CC);

       com.sun.lwuit.Command back = new com.sun.lwuit.Command("Main_Screen");

    final form6 ff = new form6();

      button.getStyle().setBgColor(0X0066CC);

    goals.getStyle().setBgColor(0X0066CC);

      All.getStyle().setBgColor(0X0066CC);
    Style g_style5 = g.getSelectedStyle() ;

    f.addComponent(button);

    ff.addCommand(back);

     //g.addComponent(main_screen);
    g.addComponent(tf);
    g.addComponent(addition);
     g.addComponent(rb);
     g.addComponent(rb2);


    g.addComponent(All);

     g.getStyle().setBgColor(0X99CCFF);

    g.addCommand(back);

     g.addCommandListener(new ActionListener()

     {


      public void actionPerformed(ActionEvent ae) {



    f.show();
         }



     }
              );


       ff.addCommandListener(new ActionListener()

     {


      public void actionPerformed(ActionEvent ae) {



    f.show();
         }



     }
              );   

    ff.getStyle().setBgColor(0X99CCFF);





     try{
             recordStore2 = RecordStore.openRecordStore("My Record Store2", true);
            }
      catch(Exception ex)
         { }
     try{
             recordStore = RecordStore.openRecordStore("My Record Store", true);
            }
         catch(Exception ex)
         { }

          All.addActionListener(new ActionListener() {

      public void actionPerformed(ActionEvent ae) {

    try
    {
        com.sun.lwuit.Label l = new com.sun.lwuit.Label("First Team Goals") ;
       ff.addComponent(l);
       String [] record=  getRecordData();
    int j1;
    String valueToBeInserted2="";

    for( j1=0;j1< getRecordData().length;j1++)
      {

    valueToBeInserted2=valueToBeInserted2 + " " + record[j1];

    mylist.addItem(record[j1]);


    }


    ff.addComponent(mylist);

     com.sun.lwuit.Label ll = new com.sun.lwuit.Label("Second Team Goals") ;
      ff.addComponent(ll);

       String [] record2=  getRecordData2();
    int j2;
    String valueToBeInserted="";

    for( j2=0;j2< getRecordData2().length;j2++)
      {

    valueToBeInserted=valueToBeInserted + " " + record2[j2];

    mylist2.addItem(record2[j2]);


    }


    ff.addComponent(mylist2);
          }
    catch(java.lang.IllegalArgumentException e){}
    finally {
    ff.show();
          }
             }



      }
    );  

     button.addActionListener(new ActionListener() {

      public void actionPerformed(ActionEvent ae) {


    g.show();
         }

      }
    );
    goals.addActionListener(new ActionListener() {

      public void actionPerformed(ActionEvent ae) {



         }

      }
    );





    final  Thread th = new Thread(this);







    addition.addActionListener(new ActionListener()
    {

      public void actionPerformed(ActionEvent ae) {

    String s =tf.getText();
    if(rb.isSelected())
    {



    if(s!=null && s.length() > 0)

    {

     try{

          String kk =tf.getText();
          mylist.addItem(kk);


                 byte bytestream[] = kk.getBytes()  ;

                 int i = recordStore.addRecord(bytestream, 0, bytestream.length);

         }

     catch(Exception ex) { }


    Dialog validDialog = new Dialog(" ");
    Style Dialogstyle = validDialog.getSelectedStyle() ;

            validDialog.setScrollable(false);
     validDialog.getDialogStyle().setBgColor(0x0066CC);
            validDialog.setTimeout(1000); // set timeout milliseconds
            TextArea textArea = new TextArea("...."); //pass the alert text here
            textArea.setFocusable(false);

           textArea.setText("A new goal has been added"+"" );
            validDialog.addComponent(textArea);

            validDialog.show(0, 10, 10, 10, true);




    }

          }


     else if (rb2.isSelected())
    {


    if(s!=null && s.length() > 0)

    {

     try{

          String kk =tf.getText();


          mylist2.addItem(kk);
           byte bytestream[] = kk.getBytes()  ;

             int i = recordStore2.addRecord(bytestream, 0, bytestream.length);

         }

     catch(Exception ex) { }


    Dialog validDialog = new Dialog(" ");
    Style Dialogstyle = validDialog.getSelectedStyle() ;

            validDialog.setScrollable(false);
     validDialog.getDialogStyle().setBgColor(0x0066CC);
            validDialog.setTimeout(1000); // set timeout milliseconds
            TextArea textArea = new TextArea("...."); //pass the al newert text here
            textArea.setFocusable(false);

           textArea.setText("A new Goal has been added"+"" );
            validDialog.addComponent(textArea);

            validDialog.show(0, 10, 10, 10, true);



    }

          }

    else if((rb.isSelected()==false&&rb.isSelected()==false)||(s==null && s.length()<= 0))

    {

        Dialog validDialo = new Dialog(" ");
            validDialo.setScrollable(false);
    validDialo.getDialogStyle().setBgColor(0x0066CC);
            validDialo.setTimeout(5000); // set timeout milliseconds
            TextArea textArea = new TextArea("...."); //pass the alert text here

            textArea.setFocusable(false);
           textArea.setText("please enter scorer name and choose his team");
            validDialo.addComponent(textArea);
    //validDialo.getStyle().set3DText(true, true);

            validDialo.show(50, 50, 50, 50, true);
            txtfield6.clear();
     }



        }

    }
    );





          f.show();



        }
    public void run ()
        {
        while(true)
        {

             String get[] = getRecordData();
             Dialog validDialog = new Dialog(" ");
            Style Dialogstyle = validDialog.getSelectedStyle() ;
            validDialog.setTimeout(5000);
            validDialog.setScrollable(true);
            validDialog.setLayout(null);
            validDialog.setTimeout(5000);
             TextArea textArea = new TextArea( );
    for(int ii=0;ii<getRecordData().length;ii++ )

    {


            textArea.setColumns(getRecordData().length);


            validDialog.addComponent(textArea);



            validDialog.show(10, 10, 10, 10, true);


    System.out.println(get[ii]+"\n");
    System.out.println(textArea.getColumns()+"\n");
    }

            }

        }
        public void pauseApp() {}

        public void destroyApp(boolean unconditional) {}

        public void actionPerformed(ActionEvent ae) {
          notifyDestroyed();
        }

         public  class f1 extends   com.sun.lwuit.Form


      {

    com.sun.lwuit.TextField tf;
       public f1()

              {

      com.sun.lwuit.Form f1 = new com.sun.lwuit.Form("Goals Records");

        tf =new com.sun.lwuit.TextField();

              }






        }



    public  class form6   extends   com.sun.lwuit.Form


      {
    com.sun.lwuit.TextField txtfield3;
    com.sun.lwuit.TextField tf3;


       public form6()

              {

      com.sun.lwuit.Form mylist = new com.sun.lwuit.Form("Goals List");


              }




    }

}
1

There are 1 best solutions below

0
On

You fail when you call to getRecordData/getRecordData2 functions.

In this function you call to recored data and return string array.But pay attention, you call to this functions every time that actionPerformed function call(when ActionListener is respond ).

This is the reason that you have multiplication records in your list.You get the same array in ever call, and additional the new result from text field.

Tip for solution: You can to save your length recored data in RMS and every time that you actionPerformed be called you can copy from your counter to new Record Store lentgh.