Accualy我閱讀所有帖子,但我無法解決我的問題。我需要幫助。當GridView滾動時,它會更改複選框選擇
我有gridview。我正在填充網格基礎適配器。我的網格有ImageViews和CheckBoxes。我正在打開任何網格並檢查CheckBox。一切都在這裏完成。
但是,當我滾動gridview所有選擇變化。我嘗試從其他帖子的一些解決方案,但我無法修復問題。
適配器GetView方法;
@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;
}
如果我刪除(convertView == NULL)線和刪除其他塊,然後,檢查不改變,但是當複選框會看不見,因爲滾動,帶滾動返回到該複選框,並沒有選中。沒有永久檢查。
我需要很大的幫助。謝謝...
你能解釋一下嗎?抱歉。 –
GridView旨在重用視圖以提高效率。例如,您可能有100項數據,但只有10個視圖可以放在屏幕上。如果顯示數據項1的視圖在頂部的屏幕上滾動,那麼該視圖將移動到底部,併成爲項目11的「convertView」。項目1的所有數據仍然存在,因此您必須覆蓋*全部*它顯示數據11正確(即你必須清除複選框)。當您向另一個方向滾動時,您希望複選框的設置與滾動前相同,這就是爲什麼您必須跟蹤數據本身中的已檢查狀態。 – Barend
謝謝,但我不能正確應用你的代碼。我僅使用tar圖像來顯示圖像。我必須在clicklistener內部分配一個新的「tar地圖」嗎?你能更新我的代碼嗎?我很久沒有打過這個東西..我真的很抱歉,因爲你更累了.. –