Динамические строки не отображаются

1

У меня есть класс Store.java, где я просто храню 2 строки и целое число. Затем я создаю объект ArrayList. Я делаю это так, чтобы я мог динамически заполнять значения из 2-х прядильщиков и редактировать текст в ArrayList. Я хочу, чтобы эти значения отображались в табличном формате. Также я создал подкласс приложения, так что ArrayList можно легко обновить и получить в других действиях. Проблема в том, что когда я нажимаю кнопку "Билл", динамические строки не добавляются в макет таблицы.

Вот соответствующий код:

(MyApp.java)

public class MyApp extends Application {

    ArrayList<store> B = null;

    public ArrayList<store> getState(){
        return B;
    }

    public void setState(ArrayList<store> B){
        this.B = B;
    }
}

(Bill.java)

public class Bill extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        this.setContentView(R.layout.calc);
        ArrayList<store> B = new ArrayList<store>();

        store temp1=null;

        MyApp appState = ((MyApp)getApplicationContext());
        appState.setState(B);
        B = appState.getState();
        TableLayout tl = (TableLayout)findViewById(R.id.myTable);

        for(int i=0;i<B.size();i++)
        {  
            temp1=new store();
            TableRow tr = new TableRow(this);
            tr.setId(100+i);
            temp1=B.get(i);      
            tr.setLayoutParams(new LayoutParams(
                        LayoutParams.FILL_PARENT,
                        LayoutParams.WRAP_CONTENT));

            TextView b = new TextView(this);
            b.setId(200+i);
            b.setText(temp1.getPizzaName()); 

            TextView b1 = new TextView(this);
            b1.setText(temp1.getPizzaSize());
            b1.setId(300+i);

            TextView b2 = new TextView(this);
            b2.setText(String.valueOf(temp1.getQuantity()));
            b2.setId(400+i);

            b.setLayoutParams(new LayoutParams(
                        LayoutParams.FILL_PARENT,
                        LayoutParams.WRAP_CONTENT));
            tr.addView(b);

            b1.setLayoutParams(new LayoutParams(
                        LayoutParams.FILL_PARENT,
                        LayoutParams.WRAP_CONTENT));
            tr.addView(b1);


            b2.setLayoutParams(new LayoutParams(
                        LayoutParams.FILL_PARENT,
                        LayoutParams.WRAP_CONTENT));
            tr.addView(b2);

            tl.addView(tr,new TableLayout.LayoutParams(
                        LayoutParams.FILL_PARENT,
                        LayoutParams.WRAP_CONTENT));
        }
    }
}
Теги:
dynamic
rows

1 ответ

1
Лучший ответ

Взгляните на свой код:

    ArrayList<store> B = new ArrayList<store>();

    store temp1=null;

    MyApp appState = ((MyApp)getApplicationContext());
    appState.setState(B);
    B = appState.getState();

Вы создаете список, чем задаете его как свое состояние, а затем возвращаете его снова. Как вы хотите, чтобы на нем были данные?

PS: Пожалуйста, следуйте кодовым условностям, ваш код трудно читать.

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

  • 0
    @ Marcos Vasconcelos О нет .. Я так глуп ... Я хотел "установить" состояние в другом действии и "получить" его здесь ... в этом ... Я не могу поверить, что я делаю такую ошибку ... Большое спасибо ... Большое спасибо ..
  • 0
    @Marcos Vasconcelos: Но у меня все еще есть проблема ... Все строки заполняются одним и тем же значением, то есть последним введенным значением ... :-(
Показать ещё 8 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню