0

我有一个列表视图,该列表包含 2 个项目,一个 TextView 和一个基于某些逻辑的 Button/EditText,如表格行中的 2 列。

现在在布局中,我有列表视图,我也有一些按钮说保存。当我单击保存时,我应该在 Listview 所在的 Activity 中检索 Button/EditText 的值,并且需要将它们存储在 db 中。

我无法弄清楚这种情况。可能有许多列表行,例如如果有 5 个列表行,则需要从位置 0-4 检索每个值。

请查看下面的屏幕截图以了解列表视图的外观。

希望你能看到右边的字段。评论旁边是编辑文本,发货日期旁边是一个按钮。

有人可以帮我或建议我吗?

在此处输入图像描述

更新:

我现在正在迭代列表视图,如下所示,

    View vr;
    EditText ee;
    for (int i=0;i<=list.getLastVisiblePosition()-list.getFirstVisiblePosition();i++) {
        //vr = list.getChildAt(i);
        vr = list.getAdapter().getView(i, null, null);
        ee = (EditText) vr.findViewById(i);
        System.out.println(ee.getText().toString()); 
    }

在这种情况下,Edittext ee 始终为空。我试过取消注释 vr = list.getChildAt(i); 但它仍然返回null。

根据某些要求,此处可以有 Edittext ee 或位于同一 i 位置的其他按钮。但我不明白为什么 ee 为空。

在这里引用了答案Iterate through ListView and get EditText-Field values

有什么想法我哪里出错了吗?

4

2 回答 2

0

您可以通过将自定义列表适配器中的按钮/编辑文本文本作为列表存储来实现此目的。可以在 EditText 视图上添加 OnFocusChangeListener 或 TextWatcher 以更新适配器中的列表。下面的链接将帮助您入门。
列表视图中的 EditText

于 2013-07-05T07:32:16.473 回答
0

我从您的要求中了解到,您希望将列表行上的 TexViews 中的值存储到 db。您想通过点击具有 ListView 的主 Activity 上的“保存”按钮来执行此操作。

那么你可以在你的主要活动上定义一个 ArrayList

List<Integer> listOfDataFromTVsOnList = new ArrayList<Integer>(); 

然后在作为 List 行一部分的 TextView 的 Change/Focus 侦听器上,您可以将相关 TextBox 的值分配给我们在 Main 活动中定义的 ArrayList:

((YourMainActivityClass) contextPassedToTheListAdapdter).listOfDataFromTVsOnList.add("Data on the TextView of the Row");

这样,当所有行都完成编辑时(这实际上取决于您的业务逻辑),ArrayList 将拥有来自 List 中所有行的 TextViews 的整个数据集。现在点击保存按钮,您可以遍历 listOfDataFromTVsOnList 并将数据保存为数据库中的单独记录。

于 2013-07-05T07:32:32.703 回答