我有一个带有以下适配器的ListActivity
this.setListAdapter(new JobTaskItemAdapter(this, jobTaskItems));
jobTaskItems是一个List,大小可以从10到100个不等。 适配器为每个JobTaskItem返回一个新的复合视图: -
[TextView][EditText][TextView]
用户将浏览列表并编辑适用的EditText框,然后选择“保存”选项。然后,我需要遍历列表中的每个视图,检索已编辑的文本并将其保存在JobTaskItem字符串字段中,然后将其保存到SQLite数据库中。 但是,我无法看到如何从屏幕滚动的视图中访问数据?
谢谢
答案 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属性中,这对于其他要求也是非常宝贵的。