Domanda

Avere un problema con CheckedTextView che non riesco a trovare una soluzione. Non sono neanche del tutto sicuro di quello che sta accadendo.

Ho un ListView personalizzato le cui righe contengono TextViews e CheckedTextView.

row.xml

<CheckedTextView 
    android:layout_height="wrap_content"
    android:layout_width="fill_parent" 
    android:id="@+id/title"
    android:text="Name" 
    android:gravity="center_vertical"
    android:paddingRight="6dip"
    android:typeface="sans" 
    android:checkMark="?android:attr/textCheckMark"
    android:textSize="16sp" 
    android:textStyle="bold"/>

MyAdapterView.java

public class RuleAdapterView extends LinearLayout
{   
    private CheckedTextView title;

    ...

    title = (CheckedTextView)v.findViewById(R.id.title);
    title.setText(entry.getName());
    title.setChecked(entry.isActive());

    // setup a listener for the checkbox
    title.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v)
        {
            ((CheckedTextView) v).toggle();
        }
    });
}

E nel file XML principale che ho impostato il ListView a android:choiceMode="multipleChoice".

Quindi quello che voglio è per le righe ListView di essere lungo e breve cliccabile e per la CheckedTextView di essere l'esecuzione clic separata. Questo funziona con l'eccezione della parte di testo del CheckedTextView. Ogni volta che uno viene premuto il CheckedTextView, il testo 'sfarfallio'. L'ho fatto lentamente per capire esattamente cosa stava succedendo. Quando si preme verso il basso sul CheckTextView, il testo bianco o scompare o alterna nero (forse inverte?) E quando si rilascia, le riappare di testo e le alterna segno di spunta. Non v'è alcun effetto 'sfarfallio' quando si preme il ListView.

Tutte le idee su quello che sta succedendo qui?

Grazie

È stato utile?

Soluzione

Invece di usare OnClickListener si dovrebbe provare a utilizzare OnTouchListener

ckToggle.setOnTouchListener(new View.OnTouchListener() {
            public boolean onTouch(View v, MotionEvent event) {
                CheckedTextView ck = ((CheckedTextView) v);
                ck.toggle();
                return false;
            }
        });

Altri suggerimenti

ListView utilizza il proprio schema di quando un elemento viene cliccato (mettendo in evidenza lo sfondo). Si potrebbe voler controllare questa soluzione Android come fare Vedi punto culminante quando si fa clic?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top