私のリストビューには、各行にedittextフィールドがあります。私は "送信"ボタンをクリックすると、私はすべての行を繰り返し、テキストフィールドとテキストフィールドから値を取得しようとします。たとえば、リストビューに5つの行があります。ユーザーは一度に3行しか見ることができません。ユーザーはスクロールして他の行を表示する必要があります。 listviewの下の "Submit"ボタンをクリックすると、すべての行を繰り返して値を取得しようとします。項目が可視でない場合は、常にnullが返されます。 したがって、画面の外にある編集テキストフィールドの値を取得しようとする必要があります。なぜListView.getChildAt(i)は、ボタンクリックイベントでedittextフィールドとtextviewから値を取得するために反復処理中にnullを返します
のListViewレイアウト
<LinearLayout
android:layout_width="match_parent"
android:layout_height="32dip"
android:orientation="horizontal" >
<TextView
android:id="@+id/txt_tv1"
android:layout_width="140dip"
android:layout_height="wrap_content"
android:gravity="left"
android:layout_gravity="center_vertical"
android:text="@string/tv1"
android:textStyle="bold"/>
<View
android:layout_width="1dip"
android:layout_height="match_parent"
android:background="@color/white" />
<TextView
android:id="@+id/txt_tv2"
android:layout_width="70dip"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:layout_gravity="center_vertical"
android:text="@string/tv2"
android:textStyle="bold"
android:ellipsize="none"
android:scrollHorizontally="false"/>
<View
android:layout_width="1dip"
android:layout_height="match_parent"
android:background="@color/white" />
<TextView
android:id="@+id/txt_tv3"
android:layout_width="70dip"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:layout_gravity="center_vertical"
android:text="@string/tv3"
android:textStyle="bold"
android:ellipsize="none"
android:scrollHorizontally="false"/>
</LinearLayout>
<ListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="0dip"
android:layout_marginTop="@dimen/padding"
android:layout_weight="1">
</ListView>
<Button
android:id="@+id/btn_submit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/submit"/>
</LinearLayout>
リストビューアイテムのレイアウト
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/linear_item"
android:layout_width="match_parent"
android:gravity="center_vertical"
android:orientation="horizontal" >
<TextView
android:id="@+id/txt_pck_tv1"
android:layout_width="140dip"
android:layout_height="wrap_content"
android:gravity="left"
android:text="AAAA"
android:textStyle="bold"/>
<View
android:layout_width="1dip"
android:layout_height="match_parent"
android:background="@color/white" />
<TextView
android:id="@+id/txt_pck_tv2"
android:layout_width="70dip"
android:layout_height="wrap_content"
android:gravity="right"
android:textStyle="bold"
android:textColor="@color/red"
android:text="BBB" />
<View
android:layout_width="1dip"
android:layout_height="match_parent"
android:background="@color/white" />
<EditText
android:id="@+id/txt_pck_edt1"
android:layout_width="70dip"
android:layout_height="match_parent"
android:layout_gravity="right"
android:ems="10"
android:gravity="right|center_vertical"
android:inputType="number"
android:textColor="@color/green"
android:textStyle="bold" />
</LinearLayout>
Clickイベント
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.btn_submit: {
int count = 0;
EditText mTxtEdt1;
TextView mTxtTv1;
for (int i = 0; i < mListView.getCount(); i++) {
v = mListView.getChildAt(i);
mTxtTv1 = (TextView) v.findViewById(R.id.txt_pck_tv1);
mTxtEdt1;= (EditText) v.findViewById(R.id.txt_pck_edt1);
String tvValue = mTxtTv1.getText().toString();
}
}
}
}
V = mListView.getChildAt(I)のボタン。子が見えないときはnullを返します。 それから値を得る方法。 提案はありますか?
あなたのListAdapterでもっとうまくいくはずです。 –
メソッドの引数ビューにビューを保存しています。新しいView変数を作成してみてください。ループの中で、最初に引数をnullにしてから初期化してから、もう一度やり直してください。 – Aradhna