Я разрабатываю приложение, в котором у меня есть вид списка с пользовательским адаптером. Я привязываю ArrayList к пользовательскому адаптеру. Адаптер имеет четыре вида изображения, а прослушиватель onclick применяется к каждому представлению изображения в режиме просмотра.Android: При щелчке в адаптере дайте неправильную позицию
Я наполнение списка массива из двух других ArrayList на основании условия, как:
/* Condition 1 */
for(int i = 0; i < arrayList.size(); i++){
if(a == id){
arrayList1.add(arrayListOther.get(i));
}
}
/* condition 2 */
for(int i = 0; i < arrayList.size(); i++){
arrayList1.add(arrayList.get(i));
}
Когда мой Список_массивов один заселяет только из условия 2, то по щелчку 1 пункта списка положения он дает, 0. Но когда мой arraList заполняется из условий 1 и 2, то тот и тот же 1-й элемент заполняется из массиваListOther и остаётся от arrayList из условия 2, то время, щелкнув по 1-му элементу списка, оно дает позицию как 1.
В мой адаптер:
public class ViewHolder {
ImageView image1;
ImageView image2;
ImageView image3;
ImageView image4;
}
public View getView(final int position, View view, ViewGroup parent) {
if (view == null || view.getTag() == null) {
holder = new ViewHolder();
view = inflater.inflate(R.layout.listview_adapter_layout, null);
holder.image1 = (ImageView) view.findViewById(R.id.imageView1);
holder.image2 = (ImageView) view.findViewById(R.id.imageView2);
holder.image3 = (ImageView) view.findViewById(R.id.imageView3);
holder.image4 = (ImageView) view.findViewById(R.id.imageView4);
view.setTag(holder);
} else {
holder = (ViewHolder) view.getTag();
}
// Some code here
// Also having Async task
if(flag == 2){
holder.image1.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Also having Async task
Log.d("Position",""+position);
}
});
}
// Some code here
}
Что не так в этом, я не получаю. Пожалуйста, предложите мне, что мне делать.
Сколько строк у см в ListView? – Fahim
Размер одной строки очень большой, поэтому я могу видеть 1 и половину второй строки несколько раз, а некоторое время два и некоторое время по одной строке за раз зависит от данных и размера изображений. –