Created a costum listview containing the photo, group name and checkbox. When selecting checkbox and scrolling checkbox, selections are randomly selected. How to solve this problem?

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="match_parent" android:weightSum="1"> <ImageView android:layout_width="100dp" android:layout_height="100dp" android:id="@+id/imageViewPhoto" android:src="@android:drawable/ic_menu_gallery"/> <LinearLayout android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="100dp" android:baselineAligned="false" android:weightSum="1"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceLarge" android:id="@+id/textName" android:layout_weight="1.00"/> <CheckBox android:id="@+id/checkedTextView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="right" android:checkMark="?android:attr/listChoiceIndicatorMultiple" android:gravity="right|center_vertical" /> </LinearLayout> </LinearLayout> import tat.ilmir.myapplicationnew.appnew.R; import java.io.File; import java.util.List; /** * Created by ilmir4400 on 12/6/14. */ public class ListViewGroupsAdapter extends BaseAdapter { private List<Groups> list; private LayoutInflater layoutInflater; Context context; public ListViewGroupsAdapter(Context context, List<Groups> list) { this.list = list; this.context = context; layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); } @Override public int getCount() { return list.size(); } @Override public Object getItem(int position) { return list.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { View view = convertView; if (view == null) { view = layoutInflater.inflate(R.layout.activity_item_groups, parent, false); } final Groups groups = getGroups(position); TextView textName = (TextView) view.findViewById(R.id.textName); ImageView imageViewPhoto = (ImageView) view.findViewById(R.id.imageViewPhoto); CheckBox checkBox = (CheckBox)view.findViewById(R.id.checkedTextView); textName.setText(groups.getName()); ImageView imageView = (ImageView) view.findViewById(R.id.imageViewPhoto); //Π²ΡΡΡ
Π°, Π³Π΄Π΅ Π±ΡΠ΄Π΅Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡ ΠΊΠ°ΡΡΠΈΠ½ΠΊΡ String imageUrl = groups.getPhoto();//... // URL ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ (Π½-Ρ: "http://site.com/image.png", "file:///mnt/sdcard/img/image.jpg") ImageLoader imageLoader = ImageLoader.getInstance(); // ΠΠΎΠ»ΡΡΠΈΠ»ΠΈ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ imageLoader.init(ImageLoaderConfiguration.createDefault(context)); // ΠΡΠΎΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π»ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΠΎΠΌ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ imageLoader.displayImage(imageUrl, imageView); File cacheDir = StorageUtils.getCacheDirectory(context, Boolean.parseBoolean("UniversalImageLoader/Cache")); ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context) .memoryCacheExtraOptions(480, 800) // width, height // .discCacheExtraOptions(480, 800, CompressFormat.JPEG, 75) // width, height, compress format, quality .threadPoolSize(5) .threadPriority(Thread.MIN_PRIORITY + 2) .denyCacheImageMultipleSizesInMemory() .memoryCache(new UsingFreqLimitedMemoryCache(2 * 1024 * 1024)) // 2 Mb .discCache(new UnlimitedDiscCache(cacheDir)) .discCacheFileNameGenerator(new HashCodeFileNameGenerator()) // .imageDownloader(new BaseImageDownloader(5 * 1000, 30 * 1000)) // connectTimeout (5 s), readTimeout (30 s) .defaultDisplayImageOptions(DisplayImageOptions.createSimple()) // .enableLogging() .build(); return view; } private Groups getGroups(int position) { return (Groups) getItem(position); } }