我创建了一个包含带有自定义行视图的列表视图的活动。
行视图:
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tableLayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal"
android:padding="1dp" >
<TableRow
android:id="@+id/row1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/itemID"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:visibility="gone" />
<TextView
android:id="@+id/itemDescription"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="2" />
<TextView
android:id="@+id/itemRequested"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1" />
<EditText
android:id="@+id/itemCompleted"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:inputType="number" />
</TableRow>
</TableLayout>
我正在使用我创建的自定义适配器类将 ArrayList 绑定到我的列表视图。这是我的项目类:
public class Item {
@SerializedName("ItemID")
public int ItemID;
@SerializedName("ItemDescription")
public String ItemDescription;
@SerializedName("ItemModel")
public String ItemModel;
@SerializedName("ItemCartons")
public int ItemCartons;
}
我正在做的是在活动列表视图中显示我的 ArrayList,并使用完美运行的自定义布局。当用户查看列表视图时,我希望他们能够在 itemCompleted EditText 控件中输入一个值,以便我可以使用已完成的数量更新项目。当我的更新事件被触发(操作栏上的按钮)时,我正在遍历列表视图并从自定义布局中获取值,如下所示:
for (int i = 0; i < mListView.getCount(); i++) {
View v = mListView.getAdapter().getView(i, null, null);
TextView requested = (TextView) v
.findViewById(R.id.itemRequested);
EditText completed = (EditText) v
.findViewById(R.id.itemCompleted);
TextView itemID = (TextView) v.findViewById(R.id.itemID);
int req = Integer.parseInt((String) requested.getText());
int comp = Integer.parseInt(completed.getText().toString());
int id = Integer.parseInt((String) itemID.getText());
if (comp <= req) {
//update item here
} else {
// qty is too much
return;
}
}
我的问题是我无法检索在 itemCompleted EditText 控件中输入的值。它始终拉取默认值,而不是用户输入的值。有没有办法可以从 EditText 中提取输入的值?