2017-04-06 4 views
0

を得ていない私は、次のコードAndroidのビューの作成は、プログラム分離インスタンス

for (int i = 0; i < cantcuenta ; i++) { 
     textview = new ArrayList<>(); 
     final Integer nro = i + 1; 
     Hmayor = new LinearLayout(view.getContext()); 
     LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT); 
     param.weight = pesoLayout; 
     Hmayor.setOrientation(LinearLayout.VERTICAL); 
     Hmayor.setWeightSum(1); 
     Hmayor.setLayoutParams(param); 

     scrollview = new ScrollView(view.getContext()); 
     LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, 0); 
     params.weight = 0.65f; 
     scrollview.setLayoutParams(params); 

     linearinterno = new LinearLayout(view.getContext()); 
     linearinterno.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT)); 
     linearinterno.setOrientation(LinearLayout.VERTICAL); 
     scrollview.addView(linearinterno); 


     for (int j = 0; j < 10; j++) 
     { 
      test = new TextView(view.getContext()); 
      test.setId(j); 
      test.setText("Lorem Ipsum" + j); 
      test.setVisibility(View.GONE); 
      textview.add(test); 
     } 

     boleta = new Button(view.getContext()); 
     RelativeLayout.LayoutParams parambo = new RelativeLayout.LayoutParams(100, 50); 
     boleta.setLayoutParams(parambo); 
     boleta.setText("BOLETA"); 
     boleta.setTextSize(TypedValue.COMPLEX_UNIT_SP, 10); 
     boleta.setTypeface(Typeface.DEFAULT_BOLD); 
     boleta.setTextAlignment(View.TEXT_ALIGNMENT_CENTER); 
     boleta.setTextColor(getResources().getColor(white, null)); 
     boleta.setBackgroundColor(getResources().getColor(colorAccent, null)); 
     boleta.setId(nro); 
     boleta.setPadding(0,0,0,0); 
     boleta.setVisibility(View.GONE); 
     boleta.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

      } 
     }); 

     factura = new Button(view.getContext()); 
     RelativeLayout.LayoutParams paramfa = new RelativeLayout.LayoutParams(100, 50); 
     paramfa.addRule(RelativeLayout.RIGHT_OF, boleta.getId()); 
     factura.setLayoutParams(paramfa); 
     factura.setText("FACTURA"); 
     factura.setTextSize(TypedValue.COMPLEX_UNIT_SP, 10); 
     factura.setTypeface(Typeface.DEFAULT_BOLD); 
     factura.setTextAlignment(View.TEXT_ALIGNMENT_CENTER); 
     factura.setTextColor(getResources().getColor(white, null)); 
     factura.setBackgroundColor(getResources().getColor(colorAccent, null)); 
     factura.setPadding(0,0,0,0); 
     factura.setVisibility(View.GONE); 
     factura.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

      } 
     }); 



     ncuenta = new Button(view.getContext()); 
     LinearLayout.LayoutParams paramb = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, 0); 
     paramb.weight = 0.15f; 
     ncuenta.setLayoutParams(paramb); 
     ncuenta.setPadding(0,0,0,0); 
     ncuenta.setText("CUENTA " + nro); 
     ncuenta.setTextSize(TypedValue.COMPLEX_UNIT_SP, 10); 
     ncuenta.setTypeface(Typeface.DEFAULT_BOLD); 
     ncuenta.setTextAlignment(View.TEXT_ALIGNMENT_TEXT_START); 
     ncuenta.setTextColor(getResources().getColor(letras, null)); 
     ncuenta.setBackgroundColor(getResources().getColor(transparent, null)); 
     ncuenta.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) 
      { 
       Boolean sw = false; 

       for (TextView este : textview) 
       { 
        if (este.getVisibility() == View.GONE) 
        { 
         este.setVisibility(View.VISIBLE); 
         linearinterno.addView(este); 
         factura.setVisibility(View.VISIBLE); 
         boleta.setVisibility(View.VISIBLE); 
         sw = true; 
        } 

       } 

       if (!sw) 
       { 
        for (TextView este : textview) 
        { 
         este.setVisibility(View.GONE); 
         factura.setVisibility(View.GONE); 
         boleta.setVisibility(View.GONE); 
        } 
        linearinterno.removeAllViews(); 
       } 


      } 
     }); 
     Hmayor.addView(ncuenta); 
     Hmayor.addView(scrollview); 





     linearinternodw = new LinearLayout(view.getContext()); 
     LinearLayout.LayoutParams paramdw = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,0); 
     paramdw.weight = 0.2f; 
     linearinternodw.setLayoutParams(paramdw); 

     Hmayor.addView(linearinternodw); 


     relainterno = new RelativeLayout(view.getContext()); 
     RelativeLayout.LayoutParams paramr = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT); 
     relainterno.setLayoutParams(paramr); 

     relainterno.addView(factura); 
     relainterno.addView(boleta); 

     linearinternodw.addView(relainterno); 








     theParent.addView(Hmayor); 
    } 

私は名前のボタン「CUENTA 1」を押すと、それは、この分布enter image description here

を作成しました「ncuenta "コードでは、それ自身のレイアウト内のすべてのテキストを、" BOLETA "と" FACTURA "というボタンと共に図にも表示させる必要がありますが、代わりに" CUENTA 2 "ビューで表示されますこの種のリサイクラビューのコーディングすべてが別々にインスタンス化されると、毎回FORを使用すると、ビューの新しいインスタンスが作成され、FORの対応するサイクルにアタッチされると考えられます。

私は4で画面を分割する場合は、最初の3つのボタンは、「CUENTA 4」ウィッヒを表示し、非表示になりますそのだけインスタンス化項目の最後のセットを取っsetOnclickListenerを私に語った。..

任意のアイデアをどのようにできたのこれを解決する?事前に

おかげ

答えて

0

あなたonClickListenerは、このコード

を実行
for (TextView este : textview) 
       { 
        if (este.getVisibility() == View.GONE) 
        { 
         este.setVisibility(View.VISIBLE); 
         linearinterno.addView(este); 
         factura.setVisibility(View.VISIBLE); 
         boleta.setVisibility(View.VISIBLE); 
         sw = true; 
        } 

       } 

実行すると、TextViewのArrayListの内容は、それがでなぜ専用ビューですが、あなたは最後の反復で追加要素となります最後のセクションが対象となります。 お手伝いをしてください。

+0

はい私は何を得るのですか... onClickListenerは各反復ごとに新しいインスタンスを取得するので、各ボタンに固有のものです。私はrecyclerviewsのために同じことを行い、完璧に動作していると言っています。 ?、theresは作成されたすべてのボタンのFORの各サイクルのためのtextview arraylistの新しいインスタンスです。 "CUENTA 1"のarraylistは "CUENTA 2"のarraylistとは異なります –

+0

リスナーは各ボタンに固有のものですが、実行するとArrayListの内容は常に同じです。 RecyclerViewの実装方法はわかりませんが、この場合の動作は予期されたものです。 –

+0

これで、配列の前のインスタンスが破棄されます。 –

関連する問題