Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/179.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 我可以通过一个数组定义多个LinearLayout吗?_Android_Arrays_Android Linearlayout - Fatal编程技术网

Android 我可以通过一个数组定义多个LinearLayout吗?

Android 我可以通过一个数组定义多个LinearLayout吗?,android,arrays,android-linearlayout,Android,Arrays,Android Linearlayout,我必须将包含3个编辑文本的linearLayout膨胀为另一个linearLayout。我可以使用linearLayout[]数组执行此操作 public class PurchaseVoucher extends Activity implements OnFocusChangeListener, OnClickListener{ LinearLayout[] row=new LinearLayout[30]; AutoCompleteTextView[] items=new AutoCom

我必须将包含3个编辑文本的linearLayout膨胀为另一个linearLayout。我可以使用linearLayout[]数组执行此操作

public class PurchaseVoucher extends Activity implements OnFocusChangeListener, OnClickListener{

LinearLayout[] row=new LinearLayout[30];
AutoCompleteTextView[] items=new AutoCompleteTextView[30];
EditText[] quants=new EditText[30];
EditText[] rates=new EditText[30];
TextView[] totals=new TextView[30];
Boolean[] flag=new Boolean[30];
EditText date;
Button save;
LinearLayout container;
int no;
int id;


@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.sale_purchase_vouch);
    no=0;
    for(int i=0;i<30;i++)
        flag[i]=true;

    save=(Button)findViewById(R.id.Save);
    save.setText("Confirm Purchase");
    LayoutInflater l=getLayoutInflater();
    container=(LinearLayout)findViewById(R.id.container);
    row[no]=(LinearLayout)l.inflate(R.layout.row, container);
    items[no]=(AutoCompleteTextView)row[no].findViewById(R.id.item);
    quants[no]=(EditText)row[no].findViewById(R.id.quant);
    rates[no]=(EditText)row[no].findViewById(R.id.rate);
    save.setOnClickListener(this);
    quants[no].setOnFocusChangeListener(this);
    flag[no]=false;


}


@Override
public void onFocusChange(View arg0, boolean arg1) {
    // TODO Auto-generated method stub
    if(flag[no+1]==true){

        if(arg1==false){
            no++;
    LayoutInflater g=getLayoutInflater();

    row[no]=(LinearLayout)g.inflate(R.layout.row, container);
    items[no]=(AutoCompleteTextView)row[no].findViewById(R.id.item);
    quants[no]=(EditText)row[no].findViewById(R.id.quant);
    rates[no]=(EditText)row[no].findViewById(R.id.rate);
    Log.d("detection", "Row is "+ no+ arg0.getId());
        }
    }
}


@Override
public void onClick(View arg0) {
    // TODO Auto-generated method stub
    Log.d("quant", quants[0].getText().toString()+" "+quants[0].getText().toString());
    Log.d("item", items[1].getText().toString()+" "+quants[1].getText().toString());
    Log.d("rate", rates[2].getText().toString()+" "+quants[2].getText().toString());

}
公共类PurchaseToucher扩展活动实现OnFocusChangeListener、OnClickListener{
LinearLayout[]行=新的LinearLayout[30];
AutoCompleteTextView[]项=新的AutoCompleteTextView[30];
EditText[]quants=新的EditText[30];
EditText[]费率=新EditText[30];
TextView[]总计=新的TextView[30];
布尔[]标志=新布尔[30];
编辑文本日期;
按钮保存;
线性布局集装箱;
国际贸易编号;
int-id;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
//TODO自动生成的方法存根
super.onCreate(savedInstanceState);
setContentView(R.layout.sale\u purchase\u vouch);
否=0;

对于(int i=0;i我认为一个更简单的方法就是创建一个新的
LinearLayout
和每次所需的
EditText
s的数量。然后你也可以在那时将这些值添加到数组中。这样,你可以拥有无限多的行,我认为这可能会让你的代码更干净。也许是这样的像

    @Override
public void onFocusChange(View arg0, boolean arg1) 
{ 
    if(flag[no+1]==true){  // not sure if this is needed

    if(arg1==false){
        no++;
        LinearLayout ll = new LinearLayout(PurchaseVoucher.this);
        for (int i= 0; i < noOfEditTextNeeded; i++)
        {
             EditText et = new EditText(PurchaseVoucher.this);
             ll.addView(et);
        }
        container.addView(ll);
        llArray.add(ll);  // create a member variable ArrayList-- ArrayList<LinearLayout> = new ArrayList<LinearLayout>()
}
@覆盖
public void onFocusChange(视图arg0,布尔值arg1)
{ 
if(flag[no+1]==true){//不确定是否需要这样做
如果(arg1==false){
否++;
LinearLayout ll=新的LinearLayout(PurchaseVoucher.this);
for(int i=0;i

我没有测试过这个,所以可能需要调整,但对我来说,这会更容易管理。我创建了一个
ArrayList
来保存
LinearLayout
s,但是你可以为
EditText
s或任何你需要的东西做它。

我认为一个更简单的方法就是创建一个新的
LinearLayout
以及每次所需的
EditText
s的数量。然后,您也可以在那时将这些值添加到数组中。这样,您可以拥有无限多的行,我认为这可能会使代码更干净。可能类似于

    @Override
public void onFocusChange(View arg0, boolean arg1) 
{ 
    if(flag[no+1]==true){  // not sure if this is needed

    if(arg1==false){
        no++;
        LinearLayout ll = new LinearLayout(PurchaseVoucher.this);
        for (int i= 0; i < noOfEditTextNeeded; i++)
        {
             EditText et = new EditText(PurchaseVoucher.this);
             ll.addView(et);
        }
        container.addView(ll);
        llArray.add(ll);  // create a member variable ArrayList-- ArrayList<LinearLayout> = new ArrayList<LinearLayout>()
}
@覆盖
public void onFocusChange(视图arg0,布尔值arg1)
{ 
if(flag[no+1]==true){//不确定是否需要这样做
如果(arg1==false){
否++;
LinearLayout ll=新的LinearLayout(PurchaseVoucher.this);
for(int i=0;i

我还没有测试过这个,所以可能需要调整,但对我来说这会更容易管理。我创建了一个
ArrayList
来保存
LinearLayout
s,但是你可以为
EditText
s或任何你需要的东西执行它。

@codeMagic,不,
No
be
0
int
s自动实例化为0。如果是这样的话键入
Integer
,然后它将是
null
。我提取了一些不必要的代码以使其看起来干净。但是我已经处理了“否”。它会在需要时自动递增。但是当我需要从EditText获取值时,问题会出现。这就是我问这个问题的原因。我认为我的ap中存在一些问题proach我现在可以编辑我的问题来问真正的问题吗problem@kayveesin是的,因为这可以工作,但如果不行,那么我们可以告诉你为什么,除非我们知道实际的问题。很难知道你想做什么。你能更详细地解释一下你的最终目标是什么吗?我没有看到任何其他使用此模型的代码,所以我猜是best答案将包括一种不同的方式来实现您的最终目标。@codeMagic,No,
No
be
0
int
s自动实例化为0。如果它是type
Integer
,那么它将是
null
。我提取了一些不必要的代码以使它看起来更干净。但我已经处理了“No”。它会自动递增ver必选。当我需要从EditText中获取值时,问题会出现。这就是我问这个问题的原因。我认为我的方法中存在一些问题。我现在可以编辑我的问题来问真实的问题吗problem@kayveesin是的,因为这是可行的,但如果不行,那么我们可以告诉你原因,除非我们知道实际的问题是真的很难说你想做什么。你能更详细地解释一下你的最终目标是什么吗?我还没有看到任何其他使用此模型的代码,所以我想最好的答案应该包括实现最终目标的不同方法。