Android列表视图和保存内容

时间:2011-07-27 06:33:12

标签: android

我有一个带有以下适配器的ListActivity

this.setListAdapter(new JobTaskItemAdapter(this, jobTaskItems));

jobTaskItems是一个List,大小可以从10到100个不等。 适配器为每个JobTaskItem返回一个新的复合视图: -

[TextView][EditText][TextView]

用户将浏览列表并编辑适用的EditText框,然后选择“保存”选项。然后,我需要遍历列表中的每个视图,检索已编辑的文本并将其保存在JobTaskItem字符串字段中,然后将其保存到SQLite数据库中。 但是,我无法看到如何从屏幕滚动的视图中访问数据?

谢谢

3 个答案:

答案 0 :(得分:1)

当ListView项目从屏幕上消失时,可以销毁/重复使用。你不能依赖它。您应该在滚动列表之前保存这些数据。

答案 1 :(得分:0)

它实际上与已经滚动屏幕的视图无关......我认为这里有几个问题,首先,你应该在你的xml布局中使用scrollView,这样你就可以访问所述字段了,第二个,我假设您正在根据jobTaskItems的大小动态地将这些compund [TextView] [EditText] [TextView]添加到您的布局中。在这种情况下,我将在您的循环中动态添加这些视图,通过数组设置对Textviews / EditTexts的引用:

TextView []TextViewArray1 = new TextView[jobTaskItems.length];
TextView []TextViewArray2 = new TextView[jobTaskItems.length];
EditText []EditTextArray = new EditText[jobTaskItems.length];

int i = 0; //used as array indexer
for (your_dynamically_added_views) {
  YOUR_CODE;
  TextViewArray1[i] = Dynamic_TextView_1;
  TextViewArray2[i] = Dynamic_TextView_2;
  EditTextArray[i] = Dynamic_EditText;
}

然后您可以稍后访问这些值以进行操作

答案 2 :(得分:0)

此链接证明最具洞察力。 Dynamic length of Listview of Edittext not saving input

我实现了必需的侦听器并将数据保存回模型中。 还将每个模型项保存到每个视图的Tag属性中,这对于其他要求也是非常宝贵的。