Отображение записей хранилища в списке lwuit

У меня есть приложение LWUIT, которое содержит RecordStore и RecordStore2 RecordStores Метод getRecordData() для извлечения всех элементов RecordStore Метод getRecordData2() для извлечения всех элементов RecordStore2

Три формы в качестве экранов приложения (f , g и ff ).
Форма g содержит следующие виджеты: TextField с именем tf, который позволяет конечному пользователю создать запись либо для RecordStore, либо для RecordStore2 RecordStores.

Два переключателя rb и rb2 Кнопка, называемая добавлением, для добавления записи (записанной в tf TextField) в RecordStore RecordStore при выборе радиокнопки rb или добавления записи в RecordStore2 RecordStore при выборе радиокнопки rb2. Два списка с именами mylist и mylist2 Кнопка с именем all При нажатии кнопки All отображается форма ff и отображаются все записи RecordStore и RecordStore2 RecordStores

проблема, с которой я сталкиваюсь, заключается в том, что при отображении mylist или mylist2 происходит умножение записей.

это мой класс

    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");


              }




    }

}

person PHPFan    schedule 28.04.2013    source источник


Ответы (1)


Вы терпите неудачу, когда вызываете функции getRecordData/getRecordData2.

В этой функции вы вызываете записанные данные и возвращаете массив строк. Но обратите внимание, вы вызываете эту функцию каждый раз, когда вызывается функция actionPerformed (когда ActionListener отвечает).

По этой причине в вашем списке есть записи умножения. Вы получаете один и тот же массив при каждом вызове и добавляете новый результат из текстового поля.

Совет для решения: вы можете сохранить записанные данные длины в RMS, и каждый раз, когда вы вызываете actionPerformed, вы можете копировать из своего счетчика в новую длину хранилища записей.

person blay    schedule 29.04.2013