Я не могу писать в EditText, он исчезает, когда я пытаюсь что-то написать, потому что getView () вызывается, когда я изменяю данные

РЕДАКТИРОВАТЬ:

Я нашел причину, по которой getView () вызывается, когда я пытаюсь что-то редактировать, поэтому данные из DataAdapter загружаются, и мои измененные изменения исчезают.

РЕДАКТИРОВАТЬ:

Я заметил одно: если в списке есть несколько строк, тогда это ОК, но если есть много строк, которые список не может отображать на видимом экране (полоса прокрутки отображается для прокрутки к другим записям), тогда возникает проблема!

Я работаю над проектом, где мы внедрили INLINE EDITING с использованием 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 } } 

Введите описание изображения здесь

Попробуйте пересмотреть код и посмотреть, Adapter.getView(..) ли Adapter.getView(..) когда он не должен. Это может произойти из-за избыточного вызова notifyDataSetChanged() .

Просто добавьте запись в эти методы и посмотрите, вызваны ли они в нужном месте и в нужном месте.