在Activity的每次迭代中添加新的LinearLayout

时间:2012-06-06 21:22:14

标签: android android-intent android-linearlayout

在我的一个活动中,当从Intent收到包时,我创建了一个Linear Layout和一些其他Widgets。目前,每次我回到该活动时,该布局都会被覆盖。如何在不重写代码的情况下每次创建新的布局?

CODE:

public class FrontPageActivity extends Activity {

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.frontpage);


        Bundle bundle = this.getIntent().getExtras();
        try{

            String size = bundle.getString("size");
            int toppcount = bundle.getStringArrayList("toppings").toArray().length;




            LinearLayout container = (LinearLayout)findViewById(R.id.container);
            TextView t = new TextView(this);


            TextView tprice = new TextView(this);
            tprice.setGravity(Gravity.RIGHT);


            LinearLayout inner = new LinearLayout(this);
            LinearLayout.LayoutParams innerparams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT,
                    LinearLayout.LayoutParams.WRAP_CONTENT);
            inner.setLayoutParams(innerparams);
            inner.setBackgroundDrawable(getResources().getDrawable(R.drawable.background));
            inner.setPadding(10,10,10,10);

            if(toppcount == 0){
                t.setText(size+" Cheese Pizza");
            }
            else{
                t.setText(size+" "+toppcount+" Topping Pizza");
            }



            tprice.setText(getPrice(size, toppcount)+"");



            tprice.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT,
                    LinearLayout.LayoutParams.FILL_PARENT));


            container.addView(inner);
            inner.addView(t);
            inner.addView(tprice);
        }
        catch(NullPointerException e){


        }
        final Intent sender = new Intent(this.getApplicationContext(), OrderPizzaActivity.class);


        Button badd = (Button)findViewById(R.id.buttonaddpizza);



        badd.setOnClickListener(new View.OnClickListener() {

            public void onClick(View arg0) {


                startActivityForResult(sender, 0);

            }
        });


    }

2 个答案:

答案 0 :(得分:0)

听起来您需要创建一个数据结构来保存LinearLayouts,或者提供一个ViewGroup容器,以便每次都添加它们。

目前,您正在创建,修改,然后覆盖LinearLayout块中的相同try{} catch(){}。我猜这就是它一直被覆盖的原因。

答案 1 :(得分:0)

据我了解,您在“最终订单”中添加了新的“选项”。每次添加额外的顶部时,您都会创建一个布局并用特定数据填充它。而你希望它也是OrderList。如果这个应用程序是关于什么的,你可以有一个应用程序级变量myOrder:List。在FrontPageActivity中添加toppings(topping = new Order())和读取列表。 建议您为订单单独布局。通过订单循环使用数据填充布局并在活动容器中膨胀。

伪的想法:

MyApplication extends Application {
    private static List<Order> mOrderList = null;

    public MyApplication(){
        mOrderList = new ArrayList<Order>();
    }

    public static List<Order> getOrderList(){
        return mOrderList();
    }

    public static void addOrder(Order order) {
        mOrderList.add(order);
    }
} 

选项活动:

MyApplication.add(order);
MyApplication.add(order);

FrontPageActivity

foreach(Order order : MyApplication.getOrderList()) {
   // fill layout with order data
   // inflate orderLayout into container
}