我是一名初学者Android开发人员,并且在Expandable ListView的EditText中遇到textData问题;
因此,我正在使用SimpleExpandableListViewAdapter。在自定义childLayout中,我有一个EditText,它使用来自数据库的数据作为文本。在主要活动中,用户可以更改数据,然后按“应用更改”按钮。但是在button.OnClickListener中,我可以从adapterValues获取listView EditTexts,但不会更改。因此,每次listView显示相同的数据。
我的意思是,EditText.getText()给了我旧数据;
每次按下按钮时,我都需要更新适配器,但是我没有新数据。
问题是,如何在Expandable ListView中获取当前的EditText文本?有没有一种方法,无需适配器指针就可以获取每个EditText值?
对不起,我无法共享我的所有代码,但这是我的问题的根源:
此代码不起作用:
TimersExpandableListView.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
Log.w("editText", "focus changed");
DailyTimersTemperatureEditText = v.findViewById(R.id.timers_daily_child_degrees_editText);
DailyTimersTemperatureEditText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
String newTemperature = DailyTimersTemperatureEditText.getText().toString();
Log.w("new temp", newTemperature);
}
@Override
public void afterTextChanged(Editable s) {
}
});
}
});
“焦点已更改”在那里,但日志“新温度”未显示。
这是我的适配器:
final SimpleExpandableListAdapter DailyTimersListAdapter = new
SimpleExpandableListAdapter(context, // this.getContext();
DailyGroupDataList,
R.layout.timers_daily_list_parent_layout,
DailyGroupFrom, GroupDailyTo, //Array of Hashmaps, ParentLayout Array;
NightAndDayChildData, R.layout.timers_daily_list_child_layout,
new String[]{"DayAndNightChildTime", "DayAndNightTemp"},
new int[]{R.id.timers_daily_child_time_textView, R.id.timers_daily_child_degrees_editText}
);
TimersExpandableListView.setAdapter(DailyTimersListAdapter);
谢谢。
答案 0 :(得分:0)
您要为 ExpandableListView (而不是EditText)设置“焦点已更改”。
尝试扩展适配器以覆盖getChildView()并找到EditText,如下所示:
final SimpleExpandableListAdapter DailyTimersListAdapter = new
SimpleExpandableListAdapter(context, // this.getContext();
DailyGroupDataList,
R.layout.timers_daily_list_parent_layout,
DailyGroupFrom, GroupDailyTo, //Array of Hashmaps, ParentLayout Array;
NightAndDayChildData, R.layout.timers_daily_list_child_layout,
new String[]{"DayAndNightChildTime", "DayAndNightTemp"},
new int[]{R.id.timers_daily_child_time_textView, R.id.timers_daily_child_degrees_editText}
){
@Override
public View getChildView(final int groupPosition, final int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
View childView = super.getChildView(groupPosition, childPosition, isLastChild, convertView, parent);
EditText DailyTimersTemperatureEditText = childView.findViewById(R.id.timers_daily_child_degrees_editText);
DailyTimersTemperatureEditText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View view, boolean b) {
if(!b){
Log.w("new temp pos", "Save data, group: " + groupPosition + ", child: " + childPosition);
String newTemperature = ((EditText)view).getText().toString();
Log.w("new temp data", newTemperature);
// Code to save the new data.
}
}
});
return childView;
}
};
希望有帮助!