在活动的每次迭代中添加新的线性布局



在我的一项活动中,当从意图接收到捆绑包时,我会创建一个线性布局和其他一些小部件。目前,每次我返回到该活动时,都会覆盖该布局。如何在不重写代码的情况下每次创建新布局?

法典:

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

    }

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

当前,您正在创建、修改然后覆盖try{} catch(){}块中的相同LinearLayout。我猜这是它不断覆盖的原因。

据我了解,您将新的"选项"添加到"最终订单"中。每次添加额外的浇头时,您都会创建一个布局并用特定数据填充它。并且您希望它又名订单列表。如果这个应用程序是关于什么的,你可以有一个应用程序级变量myOrder:List。添加配料(topping = new Order())并在FrontPageActivity中阅读列表。建议您为订单使用单独的布局。循环遍历订单会用数据填充布局,并在活动容器中膨胀。

伪想法:

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

首页活动

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

最新更新