Actualización de la pantalla del adaptador de mesa: Blackberry

¿Hay alguna forma de actualizar la pantalla del adaptador de tabla al hacer clic en el botón? Si vuelvo a llamar al método de tabla al hacer clic en el botón, entonces está agregando una nueva pantalla de adaptador de tabla debajo de la anterior ... ¿Hay alguna forma de actualizar la pantalla existente? El botón está eliminando elementos de la tabla después de lo cual quiero refrescarlo

    public static void richlistshow(){
        int ik = target_list.size()-1;
       while(ik > 0 )
       {
           Bitmap logoBitmap = Bitmap.getBitmapResource("delete.png");       

           City aCity = (City)target_list.elementAt(ik);
           String modelNumber = aCity.get_city_name().toString();
           String modelName = " X ";
           //String ne = String.valueOf(ik);
           String date_time = "  Date-Time";

           Object[] row = {modelName, modelNumber,date_time,logoBitmap};
           _tableModel.addRow(row);
           ik--;
       }


     TableView tableView = new TableView(_tableModel);
     tableView.setDataTemplateFocus(BackgroundFactory.createLinearGradientBackground(Color.YELLOWGREEN, Color.LIMEGREEN, Color.SEAGREEN, Color.SANDYBROWN));
     TableController tableController = new TableController(_tableModel, tableView);
     tableController.setFocusPolicy(TableController.ROW_FOCUS);
     tableView.setController(tableController);


     // Specify a simple data template for displaying 3 columns
     DataTemplate dataTemplate = new DataTemplate(tableView, NUM_ROWS, NUM_COLUMNS)
     {
         public Field[] getDataFields(int modelRowIndex)
         {
             //final int i =modelRowIndex;
             Object[] data = (Object[]) (_tableModel.getRow(modelRowIndex));

             final String cname = (String)data[1];

             /****** Declaring button for deletion of record from database ******/
             ButtonField delete =new ButtonField("X",ButtonField.CONSUME_CLICK);

             /*******  Setting change listener and defining field change within *******/
             delete.setChangeListener(new FieldChangeListener() {

             /*******  defining what should happen when button is clicked ********/
                public void fieldChanged(Field field, int context) {

                    DatabaseHandler delete_row = new DatabaseHandler();
                    delete_row.deletetarget(cname);

            /****calling function to retrieve values from the databasse table.***/
                    delete_row.retrieveTarget();
            /****************calling method again to show the updated values*************/      
                richlistshow();//for showing refreshed data after deletion of a record

                }
            });

             Field[] fields = {delete, new LabelField((String) data[1]), new LabelField((String) data[2]),new BitmapField((Bitmap)data[3])};
             return fields;

         }

     };

     dataTemplate.useFixedHeight(true);
     // Define regions and row height
     dataTemplate.setRowProperties(0, new TemplateRowProperties(ROW_HEIGHT));

     for(int i = 0; i < NUM_COLUMNS; i++)
     {
         dataTemplate.createRegion(new XYRect(i, 0, 1, 1));
         dataTemplate.setColumnProperties(i, new TemplateColumnProperties(Display.getWidth() / NUM_COLUMNS));
     }



     // Apply the template to the view

     tableView.setDataTemplate(dataTemplate);

     mainManager.add(tableView);

}

public final static class MyCity
{
    private String _name;
    private String _datetime;
    private String _button;
    private Bitmap _bitmap;

    MyCity(String name, String datetime, String button, Bitmap bitmap)
    {
        _name = name;
        _datetime = datetime;
        _button = button;
        _bitmap = bitmap;
    }

    public String getName()
    {
        return _name;
    }
    public String getDatetime()
    {
        return _datetime;
    }
    public String getButton()
    {
        return _button;
    }
    public Bitmap getBitmap()
    {
        return _bitmap;
    }
}


/****************TABLE CONTROLLER CLASS ******************/
 private class CityTableModelAdapter extends TableModelAdapter
    {
        public int getNumberOfRows()
        {
            return _cities.size();
        }
        public int getNumberOfColumns()
        {
            return NUM_COLUMNS;
        }
        protected boolean doAddRow(Object row)
        {
            Object[] arrayRow = (Object[]) row;

            System.out.println("! : "+arrayRow[0]+" @: "+arrayRow[1]+" #: "+arrayRow[2]);

            _cities.addElement(new MyCity((String) arrayRow[0], (String) arrayRow[1], (String) arrayRow[2], (Bitmap) arrayRow[3]));
            return true;
        }
        protected Object doGetRow(int index)
        {
            MyCity mycity = (MyCity) _cities.elementAt(index);

            Object[] row = {mycity.getName(),mycity.getDatetime(),mycity.getButton(),mycity.getBitmap()};

            return row;

        }


    }

preguntado el 22 de mayo de 12 a las 13:05

Llame al invalidate() método de MainScreen ejemplo. -

Estoy poniendo el método invalidate () y debajo estoy llamando a la función de recuperación y a la función richlistshow () nuevamente ... pero en lugar de actualizar, está agregando un nuevo diseño de tabla debajo del anterior y si elimino todo el elemento, todavía muestra el último elemento que eliminó en el último ..... -

Antes de agregar nada, por ejemplo mainManager.add(tableView); , asegúrese de eliminar la antigua tableView añadido a mainManager. Y llama invalidate() después de que toda la actualización haya terminado. -

si (vista de tabla) { mainManager.delete (vista de tabla); mainManager.add(tableView); } más{ mainManager.add(tableView); } Aquí está lo que estoy tratando de hacer, pero muestra un error en la condición if (tableView)... ¿¿¿¿Qué debo escribir aquí???? -

try { mainManager.delete(tableView); } catch (Exception exc) {} use este código para eliminar tableView siempre. Y después de esto, agrega mainManager.add(tableView); -

0 Respuestas

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.