Accualy Я читаю все сообщения, но я не могу решить свою проблему. И мне нужна помощь.Когда прокручивается GridView, он меняет CheckBox Selections
У меня есть gridview. Я заполняю сетки базовым адаптером. У моих сеток есть ImageViews и CheckBoxes. Я LongTouching любой сетки и проверки CheckBox. Все сделано здесь.
Но когда я просматриваю сетку, все изменения меняются. Я пробую какое-то решение из других сообщений, но я не могу исправить проблему.
Адаптер GetView Method;
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View grid;
if (convertView == null) {
grid = new View(mContext);
LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
grid = inflater.inflate(R.layout.mygrid, parent, false);
} else
{
grid = (View) convertView;
}
ImageView imageView = (ImageView) grid.findViewById(R.id.imagepart);
final CheckBox ch = (CheckBox)grid.findViewById(R.id.checkBox);
ch.setTag(position);
HashMap<String,String> tar;
tar = data.get(position);
imageLoader.DisplayImage(tar.get(FragmentB.FOTOYOL),imageView);
grid.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
CheckBox chh = (CheckBox)v.findViewWithTag(position);
chh.setChecked(true);
return false;
}
});
return grid;
}
Если удалить (== NULL convertView) строку и удалить еще блок затем проверяет, не меняется, но когда флажок будет невидимыми из свитка, возвращаясь с прокруткой на этот флажок и снято. Не проверяется постоянно.
Мне нужна большая помощь. Спасибо ...
Не могли бы вы объяснить больше, пожалуйста? Сожалею. –
GridView предназначен для повторного использования представлений для повышения эффективности. Так, например, у вас может быть 100 элементов данных, но на экране может поместиться всего 10 представлений. Если представление, показывающее элемент данных 1, прокручивается вверху экрана вверху, это представление перемещается в нижнюю часть и становится 'convertView' для элемента 11. Все данные для элемента 1 все еще там, поэтому вам необходимо перезаписать * все * чтобы правильно отобразить данные 11 (т. е. вы должны снять флажок). Когда вы прокручиваете в другом направлении, вы хотите, чтобы флажки были установлены так же, как и перед прокруткой, поэтому вам нужно отслеживать статус проверки в самих данных. – Barend
Спасибо, но я не могу применить ваш код. Я использую tar-карту только для изображений. Должен ли я назначить новую «карту tar» внутри кликмена? Можете ли вы обновить мой код? Я долго борюсь за эту вещь. Я очень сожалею из-за вашего более измученного. –