我有列表项目EditText,我不知道会有多少项目.我有一个问题,当我在输入一些文字EditText,然后向下滚动ListView,之后我已经向上滚动再次出现在我的第一个没有文字EditText,或有其他一些文本EditText的ListView.
我已经尝试过TextWatcher,并将数据保存到数组中,但问题是返回的视图位置ListView并不总是正确的,所以我从数组中丢失了一些数据.
请帮忙.
这是我的代码:
public class EfficientAdapter extends BaseAdapter {
private LayoutInflater mInflater;
public String[] Current;
ArrayList<String> MeterName, PreviousReading, Current_Reading;
JSONArray getArray_Meter_Reading;
public EfficientAdapter(Context context, JSONArray getArray_Meter_Reading) {
mInflater = LayoutInflater.from(context);
this.getArray_Meter_Reading = getArray_Meter_Reading;
MeterName = new ArrayList<String>();
PreviousReading = new ArrayList<String>();
for (int i = 0; i < getArray_Meter_Reading.length(); i++) {
try {
String Meter_Name = getArray_Meter_Reading.getJSONObject(i)
.getString("MeterName").toString();
String previous_Meter_Reading = getArray_Meter_Reading
.getJSONObject(i).getString("PrevMeterReading") …Run Code Online (Sandbox Code Playgroud) 我的应用程序中有一个listview基本上是一个问卷,所以有一些用户需要填写的EditTexts.我遇到了以下问题:
一些EditText需要数字输入,所以我将相应的xml类型中的inputType设置为数字,但是,当我单击EditText时,会显示数字键盘,但几乎立即消失,并显示常规键盘.
可以想象,我需要存储用户在这些EditTexts中输入的值.我遇到的问题是,在我在SOME EditTexts中输入一些文本并向下滚动后,当我回去时文本消失了.您可以在我的代码中看到我试图阻止这一点,我应该提到它与复选框完美配合.
一开始我遇到了失去焦点的问题,但我解决了其他问题(将descendantFocusablity ="beforeDescendants"添加到ListView和windowSoftInputMode ="adjustPan").工作正常,但当EditText低于屏幕的一半时,一旦我开始输入它就会失去焦点. 列表适配器的getView方法:
public View getView(final int position,View result,ViewGroup parent)
{
final ViewHolder vh;
final Question question = values.get(position);
if(holders[position]==null)
vh = new ViewHolder();
else
vh = holders[position];
LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if(question.getQuestionType().equals(Question.TYPE_CLOSED))
{
result = inflater.inflate(R.layout.closed_question_list_item, null);
vh.cb = (CheckBox)result.findViewById(R.id.checkbox);
vh.cb.setOnCheckedChangeListener(new OnCheckedChangeListener()
{
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
{
vh.isChecked = isChecked;
holders[position] = vh;
}
});
vh.cb.setChecked(vh.isChecked);
}
else
{
result = inflater.inflate(R.layout.numeric_question_list_item, null);
vh.et = (EditText)result.findViewById(R.id.question_et);
vh.et.addTextChangedListener(new TextWatcher()
{
@Override …Run Code Online (Sandbox Code Playgroud)