, пожалуйста, помогите мне в этой проблеме, я попытался исправить его в течение 3 дней, но ничего не получилось.Дисплей клавиатуры Android влияет на макет
У меня есть SearchView, Fragment, ArrayAdapter, который отображает элементы списка, все работает нормально, но есть одна проблема, всякий раз, когда клавиатура отображается/скрывается, когда я нажимаю на SearchView, вызывается метод getView в MyArrayAdapter и все элементы в списке перезагружаются, что я не хочу, потому что у каждого элемента есть ImageView, изображение загружается с url с помощью AsyncTask. Я не знаю, нормальное поведение или нет, пожалуйста, помогите мне.
В Фрагменте создайте ArrayAdapter
final SubjectArrayAdapter adapter = new SubjectArrayAdapter(getActivity(), list);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(getActivity(), "SUBJECT ID: " + view.getId(), Toast.LENGTH_LONG).show();
}
});
В ArrayAdapter
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View rowView = null;
try {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
rowView = inflater.inflate(R.layout.row_layout, parent, false);
TextView firstTextView = (TextView) rowView.findViewById(R.id.firstLine);
TextView secondTextView = (TextView) rowView.findViewById(R.id.secondLine);
ImageView imageView = (ImageView) rowView.findViewById(R.id.icon);
firstTextView.setText(list.get(position).getSubjectName());
secondTextView.setText(list.get(position).getDescription());
Toast.makeText(context, "" + list.get(position).getSubjectId(), Toast.LENGTH_SHORT).show();
new DownloadImageTask(imageView).execute(list.get(position).getIconUrl());
rowView.setId(list.get(position).getSubjectId());
} catch (Exception e) {
Log.e("SubjectArrayAdapter!getView", e.toString());
}
return rowView;
}
SearchView нормально SearchView, ничего конкретного, я изменил его на EditText и проблема все еще происходит, я использовал эмулятор без дисплея клавиатуры, и ничего не происходит, поэтому моя единственная догадка заключается в том, что проблема заключается в отображении/скрытии клавиатуры.
Благодаря
EDIT
Спасибо за поддержку всем, я нашел Пикассо LIB, хотела, чтобы я знал об этом раньше, я просто изменить 1 строку кода
new DownloadImageTask(imageView).execute(list.get(position).getIconUrl());
с этим
Picasso.with(context).load(list.get(position).getIconUrl()).fit().into(imageView);
Его нормальное поведение адаптера, потому что всякий раз, когда представление вида списка становится невидимым или возвращается к видимости, адаптер снова генерирует представление и вызывает метод getVIew. вы не можете остановить это. –
Уверены ли вы, я попробовал с игровым магазином, но их образ не перезагрузился, как я делаю, когда я нажимаю «Поиск в Google Play» или скрываю его, не использовал ли он адаптер, как я, или неправильно использую изображение загрузки, потому что мой маг явно перезаряжается. Спасибо –
Там изображение не перезагружается, потому что они кэшируют изображение после загрузки и использования из него в следующий раз – Fahim