0

私はLinearLayout内に1つのEditTextと1 TextViewをプログラムで作成し、EditTextとTextViewからテキストを取得する必要があります。そして、これは私のコードです:TextViewとEditTextをプログラムで作成する

main.xml:

<ScrollView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:padding="10dp" > 

     <LinearLayout 
      android:id="@+id/result" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="right" 
      android:gravity="right" 
      android:orientation="vertical" > 
     </LinearLayout> 
    </ScrollView> 

MainActivity.java:

linearLayout = (LinearLayout) view.findViewById(R.id.result); 

    ....... 

public void addItem(){ 
    LinearLayout childLayout = new LinearLayout(context); 
    LinearLayout.LayoutParams linearParams = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
    childLayout.setLayoutParams(linearParams); 
    childLayout.setTag(item_name); 
    childLayout.setOrientation(LinearLayout.HORIZONTAL); 


    TextView item = new TextView(context); 
    item.setTag(item_name); 
    item.setText(item_name); 
    item.setTextSize(16); 
    item.setGravity(Gravity.LEFT); 
    LinearLayout.LayoutParams llp1 = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); 
    llp1.setMargins(0, 0, 15, 0); 
    item.setLayoutParams(llp1); 
    item.setTextColor(context.getResources().getColor(android.R.color.black)); 

    EditText quantity = new EditText(context); 
    quantity.setText(nama_barang); 
    quantity.setTextSize(16); 
    quantity.setGravity(Gravity.CENTER_HORIZONTAL); 
    LinearLayout.LayoutParams llp2 = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); 
    llp2.setMargins(10, 0, 15, 0); 
    quantity.setLayoutParams(llp2); 
    quantity.setTextColor(context.getResources().getColor(android.R.color.black)); 

    childLayout.addView(item); 
    childLayout.addView(quantity); 
    linearLayout.addView(childLayout); 
} 

、私を助けてください。私は私の質問

は、実は、上記の私の場合は私がのaddItem()をクリックしたときに、私のアプリは、このプロセスが終了するので、もし、新しいのTextViewとのEditTextを表示し、次へ移動します編集が起こってきた

私を助けて

Items Qtt 
Cola......1 

Chicken...1 

Meat......2 

:StringBuilderのを使用して、このようなTextViewsとEditTextsのすべてのテキストを表示するためのフラグメント。

答えて

0

このようにしたいですか?

String str = item.getText().toString(); 
String str2 = quantity.getText().toString(); 
+0

はい、私の問題は、私はのLinearLayout内のすべてのChildLayoutからTextViews、すべてのEditTextsからすべてのテキストを取得したいです。条件のために作成されたものだけでなく、TextViewとEditTextがさらにあります。 – wdyz

+0

これで、すべての文字列を取得するための配列を作成できます。 'の文字列=新しいArrayList <>();'の末尾に 'strings.add(str);'と 'strings.add(str2);' –

+0

を追加するために、 'for''リストの外側に宣言します。私の質問を編集しました。上記を確認してください。ありがとう – wdyz

-1
item.getText().toString() 
quantity.getText().toString() 
+0

上記の私のソースコードを読んでください。 LinearLayoutのすべてのchildLayoutからすべてのTextViewsテキストとすべてのEditTextsテキストを取得する必要があります。実際には私のアプリは – wdyz

0

前述したように、item.getText().toString();を使用して、それにもかかわらず、私はあなたの問題はあなたが後でどこかのコード上でローカルにそれをすることによって、ループ内あなたのビューを宣言しているという事実にあると推測します、あなたが必要とするすべてでありますテキストはまったく得られません。

ビューをグローバル変数として宣言したり、ループの外部で行うようにしてください。一方

//.... 

TextView item; 
EditText quantity;  


for(int i = 0; i < cartCount; i++) { 
LinearLayout childLayout = new LinearLayout(context); 
LinearLayout.LayoutParams linearParams = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
childLayout.setLayoutParams(linearParams); 
childLayout.setTag(item_name); 
childLayout.setOrientation(LinearLayout.HORIZONTAL); 


item = new TextView(context); 
item.setTag(item_name); 
item.setText(item_name); 
item.setTextSize(16); 
item.setGravity(Gravity.LEFT); 
LinearLayout.LayoutParams llp1 = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); 
llp1.setMargins(0, 0, 15, 0); 
item.setLayoutParams(llp1); 
item.setTextColor(context.getResources().getColor(android.R.color.black)); 

quantity = new EditText(context); 
quantity.setText(nama_barang); 
quantity.setTextSize(16); 
quantity.setGravity(Gravity.CENTER_HORIZONTAL); 
LinearLayout.LayoutParams llp2 = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); 
llp2.setMargins(10, 0, 15, 0); 
quantity.setLayoutParams(llp2); 
quantity.setTextColor(context.getResources().getColor(android.R.color.black)); 

childLayout.addView(item); 
childLayout.addView(quantity); 
linearLayout.addView(childLayout); 

}

、あなたのコードを見ることで、あなたはのEditTextとTextViewsのリストを作成しようとしていますか?その場合は、ListViewをカスタムアイテムと併用することを検討することをおすすめします。 Hereあなたは何かsimmilarをやって素敵なチュートリアルを見つけることができます。

+0

です。 「項目を追加」ボタンを表示します。したがって、「アイテムを追加」をクリックすると、プログラムで作成されたTextViewとEditTextが表示されます。私の問題は、次のフラグメントに移動すると、すべてのTextViewsとEditTextsを表示したいということです。 – wdyz

+0

... StringBuilderを使用しています。 – wdyz

0

これは、recyclerviewなどのアダプタビューを表示する必要があるように感じます。線形レイアウトを使用すると、パフォーマンスの問題が発生する可能性があります。

とにかく。リニアレイアウトに追加すると、ビューをリストに追加できます。その後、

List<TextView> items = new LinkedList<>(); 
List<EditText> quantities = new LinkedList<>(); 
for(int i = 0; i < cartCount; i++) { 
    ... 
    childLayout.addView(item); 
    childLayout.addView(quantity); 
    items.add(item); 
    quantities.add(quantity); 
    linearLayout.addView(childLayout); 
} 

ご意見をループ

for (TextView textView : items) { 

} 

for (EditText editText : quantities) { 

} 
+0

申し訳ありませんが、私は上記の私の問題を編集しました、確認してください、ありがとう – wdyz

関連する問題