gridview에서 현재 폰에 있는 어플에 대한 아이콘을 불러와


이 중 몇개를 클릭하면 선택된 아이콘 바탕의 색이 변하게 하고싶습니다.


그래서 그리드뷰에 관한 클릭 리스너를 만들고


그 안에서 클릭된 뷰의 배경색을 바꿨는데


처음에는 잘 되는데


스크롤을 내렸다가 다시 올리면 엉뚱한 아이콘의 바탕색이 바껴져있네요 ㅠ.ㅠ;;


아마도 스크롤을 내렸다가 올리면 뷰가 다른데로 변경되어서 이런현상이 발생하는거 같은데


고수님들 어케 해야 되는지 조언좀 해주세요 ㅠ.ㅠ;;

 

 package com.yginthemoon.example;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.ResolveInfo;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.AdapterView.OnItemClickListener;
import java.util.ArrayList;
import java.util.List;
public class ex extends Activity implements OnClickListener {
 GridView mGrid;
 private select_icon c_si = new select_icon();
 private notice c_n = new notice();
 private ArrayList<ResolveInfo> selected_icon = new ArrayList<ResolveInfo>(); 
 private int count = 0;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  loadApps(); // do this in onresume?
  setContentView(R.layout.main);
  
  Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
  mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
  final List<ResolveInfo> pkgAppsList = getPackageManager().queryIntentActivities( mainIntent, 0);
  mGrid = (GridView) findViewById(R.id.myGrid);
  mGrid.setAdapter(new AppsAdapter());        
  View btn_make_set = findViewById(R.id.make_set);
  btn_make_set.setOnClickListener(this);   
  mGrid.setOnItemClickListener(new OnItemClickListener() {
   @Override
   public void onItemClick(AdapterView<?> parent, View view, int position, long id) {    
    ResolveInfo temp = pkgAppsList.get(position);
    
    int result = c_si.add_icon(temp);
    
    if(result>0)
     view.setBackgroundColor(Color.GRAY);
    else if(result < 0)    
     view.setBackgroundColor(Color.BLACK);    
   }
  });
 }
 private List<ResolveInfo> mApps;
 private void loadApps() {
  Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
  mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
  mApps = getPackageManager().queryIntentActivities(mainIntent, 0);
 }
 public class AppsAdapter extends BaseAdapter {
  public AppsAdapter() {
  }
  public View getView(int position, View convertView, ViewGroup parent) {
   ImageView i;
   if (convertView == null) {
    i = new ImageView(ex.this);
    i.setScaleType(ImageView.ScaleType.FIT_CENTER);
    i.setLayoutParams(new GridView.LayoutParams(100, 100));
   } else {
    i = (ImageView) convertView;
   }
   
   ResolveInfo info = mApps.get(position);
   i.setImageDrawable(info.activityInfo.loadIcon(getPackageManager()));
   
   return i;
  }
  public final int getCount() {
   return mApps.size();
  }
  public final Object getItem(int position) {
   return mApps.get(position);
  }
  public final long getItemId(int position) {
   return position;
  }
 }
 @Override
 public void onClick(View v) {
  // TODO Auto-generated method stub
 }
}