Omer Yılmaz
Omer Yılmaz
İstanbul-II (Anadolu)
30/03/2015 tarihinden beri üye
15 GY Puanı
99K GY Sırası

Kişisel Sayfaları

İlgi Alanları

1 Rozet
0 Sertifika
2 Soru Sordu
0 Cevap Verdi
0 Blog Yazısı
0 Etiket Takibi

Hakkında

İş Tecrubesi

Kullanıcıya ait İş tecrübesi bilgisi bulunmamaktadır.

Eğitim Geçmişi

Kullanıcıya ait Eğitim geçmişi bilgisi bulunmamaktadır.

Sertifikalar & Başarılar

GY Sertifikaları (0)
Kullanıcının GY sertifikası bulunmamaktadır.
Diğer Sertifikaları (0)
Kullanıcıya ait sertifika bulunmamaktadır.
Test Sonuçları (0)

Kullanıcıya ait test sonucu bulunmamaktadır.

Dil Becerileri

Son Forum Aktiviteleri

2
Tümünü Gör

ListView scroll edilince seçilen item ın yeri değişiyor

Merhaba,

ListView kullanarak verileri listeliyorum. Listeden herhangi bir item seçildiğinde background rengini değiştiriyorum. Buraya kadar problem yok. Fakat ListView i aşağı-yukarı kaydırdığımda seçilen item in position ı değişiyor. Bir bakıyorum 1. position seçili bir bakıyorum 5. position seçili. Problemi çözmek için birçok yol denedim. Fakat hiçbiri problemi çözmeme yardımcı olamadı. ListView in setOnItemClickListener metodunu kullanarak view.setBackgroundColor(renk) ile arkaplan rengini değiştirmeyi, ViewHolder yapısı kullanarak custom olarak oluşturduğum listview in itemına tıklandığında o item'in bulunduğu layout'un arkaplan rengini değiştirdim, tıklanan position değerlerinin tutulacağı bir array tanımlayıp setOnItemClickListener içerisinde position değerini buraya atıp CustomListView içerisinde if, else kontrolleri ile arka plan rengini değiştirmeye çalıştım. Bu denemelerim sonucunda problemi çözemedim. Lütfen biri bana yardımcı olabilir mi?

Teşekkürler.

9 yıl önce yanıtladın

ListView deki itemların yerleri neden değişiyor?

Merhabalar,

ListView içerisinde verilerim bulunuyor. Bu listenin herhangi bir itemındaki değeri artırıp o item'in verilerini güncelliyorum. Güncelleme işlemi gerçekleştirildiğinde listeyi aşağı-yukarı kaydırdığımda listedeki sayısını artırdığım item'ın yeri değişiyor. Tavsiyeleriniz nelerdir?

public class MainActivity extends ActionBarActivity {
    private int pos;
    private ListView listView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        listView = (ListView) findViewById(R.id.listView);
        listView.setAdapter(new CustomAdapter(MainActivity.this));

        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                pos = position;
            }
        });

    }

    public class CustomAdapter extends BaseAdapter {
        private String[] array = {
                "Item 1",
                "Item 2",
                "Item 3",
                "Item 4",
                "Item 5",
                "Item 6",
                "Item 7",
                "Item 8",
                "Item 9",
                "Item 10",
                "Item 11",
                "Item 12",
                "Item 13",
                "Item 14",
                "Item 15",
                "Item 16",
                "Item 17",
                "Item 18",
                "Item 19",
                "Item 20",
                "Item 21"
        };
        public LayoutInflater inflater;
        private int countValue = 1;
        private ViewHolder holder;

        public CustomAdapter(Context context) {
            inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        }

        @Override
        public int getCount() {
            return array.length;
        }

        @Override
        public Object getItem(int position) {
            return array[position];
        }

        @Override
        public long getItemId(int position) {
            return position;
        }

        @Override
        public View getView(final int position, View convertView, ViewGroup parent) {
            if (convertView == null) {
                convertView = inflater.inflate(R.layout.list_item, parent, false);
                holder = new ViewHolder();
                holder.item = (TextView) convertView.findViewById(R.id.item);
                holder.reduce = (Button) convertView.findViewById(R.id.reduce);
                holder.count = (TextView) convertView.findViewById(R.id.count);
                holder.increase = (Button) convertView.findViewById(R.id.increase);
                holder.increase.setTag(position);
                convertView.setTag(holder);
            } else
                holder = (ViewHolder) convertView.getTag();

            holder.item.setText(array[position]);
            holder.increase.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    countValue++;
                    updateItemAtPosition(pos);
                }
            });

            return convertView;
        }

        private void updateItemAtPosition(int position) {
            int visiblePosition = listView.getFirstVisiblePosition();
            View view = listView.getChildAt(position - visiblePosition);
            listView.getAdapter().getView(position, view, listView);
            holder.count.setText(String.valueOf(countValue));
        }

        class ViewHolder {
            TextView item, count;
            Button increase, reduce;
        }
    }
}

9 yıl önce yanıtladın