Я не могу записать в EditText, он исчезает, когда я пытаюсь что-то написать, потому что вызывается getView (), когда я изменяю данные
РЕДАКТИРОВАТЬ:
Я нашел причину, которая заключается в том, что getView () вызывается, когда я пытаюсь что-то редактировать, поэтому данные из DataAdapter загружаются и мои отредактированные изменения исчезают.
РЕДАКТИРОВАТЬ:
я заметил одну вещь: если в просмотре списка есть несколько строк, то все в порядке, но если есть много строк, которые просмотр списка не может отобразить на видимом экране (появляется полоса прокрутки для прокрутки к другим записям), тогда возникает проблема !!
Я работаю над проектом, в котором мы реализовалиВНУТРЕННЕЕ РЕДАКТИРОВАНИЕ с использованием ListViewданные можно редактировать внутри списка.
Я определил XML для каждого элемента / строки этого ListView. Я использую Custom DataAdapter, чтобы связать данные с ListView.
Когда я в первый раз загружаю это действие, загружается ListView, я могу редактировать данные, и все работает нормально. Когда что-то редактируется, изменения сохраняются в базе данных SQLite, для этого у меня есть кнопка.
Теперь проблема в том, что после того, как данные сохранены В ОЧЕНЬ ПЕРВЫЙ РАЗ, и просмотр списка снова загружен, я больше не могу редактировать данные. Когда я пытаюсь отредактировать данные, клавиатура появляется, а затем автоматически исчезает и введенные данные также исчезают. Пожалуйста, смотрите скриншоты.
Может ли кто-нибудь помочь мне решить эту проблему?
мой класс пользовательских адаптеров:
public class QuestionAdapter extends ArrayAdapter<QuestionEntity> {
private ArrayList<QuestionEntity> items;
private Context CurrentContext;
private QuestionEntity CurrentItem;
private Cursor OptionsCursor;
public QuestionAdapter(Context context, ArrayList<QuestionEntity> items, Cursor curOptions)
{
super(context, R.layout.grid_item, items);
this.CurrentContext = context;
this.items = items;
this.OptionsCursor = curOptions;
}
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
//verify that the items list is still valid since
//the list may have been cleared during an update
if ((items == null) || ((position + 1) > items.size()))
return convertView; //Can't extract item
CurrentItem = items.get(position);
if(convertView == null)
{
LayoutInflater inflater = LayoutInflater.from(CurrentContext);
convertView = inflater.inflate(R.layout.grid_item, null);
}
if (convertView != null)
{
TextView txtQuestion = (TextView) convertView.findViewById(R.id.txtQuestion);
txtQuestion.setText(CurrentItem.getTitle());
Spinner cmbOptions = (Spinner)convertView.findViewById(R.id.cmbOptions);
/*
* Load the options from OptionsCursor
*/
LoadOptions(cmbOptions);
/*
* Attach onItemClick event with cmbOptions
* When the user change the option we will populate the comments based on the option
*/
cmbOptions.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id)
{
try
{
//If MyCondition is true show msg to user.
}
catch(Exception ex)
{
ex.toString();
}
}
});
}
return convertView;
}
private void LoadOptions(Spinner iacOptions)
{
//Load data in the spinner using the OptionsCursor
}
}