Нулиране на ред в списъчен изглед на Android

В ListView, когато избрах ред, се задава цвят на фона с нулиране на предишния избран. но когато списъкът се превърта надолу, той показва друг избран ред, същият фон означава, че едно чао, една страница превърта надолу, редът е избран.

Моля, помогнете ми

В тези две изображения избрах само първия ред, но когато превъртя страница 23, редът вече е избран. Как да настроя избран ред със страница с възможност за превъртане?

ListView lv = getListView();
    lv.setTextFilterEnabled(true);

    lv.setBackgroundResource(R.drawable.shape);

    // on seleting single voter
    // launching Edit Product Screen       

    lv.setOnItemClickListener(new OnItemClickListener() {

        //mOnDoubleTapListener = listener;

        @Override
        public void onItemClick(AdapterView<?> parent, View view,int position, long id) {

            boolean netFlag = new validationClass().haveNetworkConnection(context);

            if(!netFlag) {
                Toast.makeText(getApplicationContext(), "Data Connection is not available.", Toast.LENGTH_LONG).show();
                return;
            }

            if (currentSelectedView != null && currentSelectedView != view) {
                TextView textViewName = (TextView) currentSelectedView.findViewById(R.id.name);
                TextView textViewPart = (TextView) currentSelectedView.findViewById(R.id.partno);
                textViewName.setTextColor(getResources().getColor(android.R.color.darker_gray));
                textViewPart.setTextColor(getResources().getColor(android.R.color.darker_gray));
            } currentSelectedView =view
                TextView textViewName = (TextView) view.findViewById(R.id.name);
                TextView textViewPart = (TextView) view.findViewById(R.id.partno);
                                textViewName.setTextColor(getResources().getColor(R.color.text_color));
                textViewPart.setTextColor(getResources().getColor(R.color.text_color));
            }

}

въведете описание на изображението тук

въведете описание на изображението тук


person Nitin Karale    schedule 17.10.2013    source източник
comment
Здравейте, трудно е да следвам описанието ви без примерни кодове. Моля, публикувайте фрагменти от код там, където имате проблеми.   -  person Otra    schedule 17.10.2013
comment
това е така, защото ListView рециклира изгледи. когато превъртате списъка си, редовете, които излизат извън екрана, се кешират и след това се показват отдолу, докато превъртате до новите редове. опитайте това за разбиране: piwai.info/android-adapter-good- practices/#getView-recycling   -  person Vasily Sochinsky    schedule 18.10.2013


Отговори (1)


Има две думи за решаване на това:

  1. Едно натискане/щракване върху елемент просто задава елемента като избран и потребителят трябва да щракне върху бутон, за да действа върху елемента.

  2. Тъй като списъкът ви е на цял екран, накарайте onClick() да запише позицията на избрания елемент. При следващо щракване сравнете текущата позиция с последната. Ако не са еднакви, просто запишете новата позиция. Ако са еднакви, продължете с операцията. Или можете да изискате от потребителя да направи дълго щракване (onItemLongClick()), за да действа върху селекцията, ако текущата позиция е същата като последната.

И двата начина могат да помогнат на приложението ви да избегне откриването на кликване, когато потребителят наистина се опитва да превърта. Android няма да извика onClick(), ако потребителят започне да превърта веднага. Не можете да контролирате това.

person Rick Falck    schedule 17.10.2013