Tableview Android si comporta come un listview
Domanda
Sto usando layout del tavolo per visualizzare i dati, ma io voglio che si comportano come elementi della lista (Capacità di selezionare, quando si seleziona il cambiamento di fondo, quando scatto, con effetto hover, clicca grado) a tal fine sto usando seguenti ascoltatori
-
OnClickListener(to perform action)
-
OnFocusChangeListener(To change background color)
-
OnTouchListener(to focus specific row)
Ora problema è quando l'utente toccare qualsiasi elemento si ottiene concentrarsi prima e poi deve toccare di nuovo al fuoco evento onclick, per risolvere questo problema ho fatto un cambiamento e ontouch mi licenzio azione su specifica a remare.
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() != MotionEvent.ACTION_UP){
v.requestFocus();
int viewId= v.getId();
handleEvent(viewId);//Switch cases to perform row specific actions.
}
return false;
}
ora se l'utente tocca l'evento fila licenziato che funziona perfetto, ma un altro problema sorge qui, quando anche l'utente vuole scorrere verso il basso i dati via trascinando il dito sullo schermo evento ontouch
licenziato .... e l'azione eseguita automaticamente anche se utente credo che sarà scroll down
schermo.
Soluzione
Non so se questa soluzione è applicabile nel tuo caso, ma forse si può fare in questo modo: Supponiamo che l'utente fa clic il tuo articolo (quindi probabilmente otterrete sequenza di tre eventi al OnTouch () metodo:.. ACTION_ GIÙ, ACTION_ SPOSTA (non necessariamente) e ACTION_UP Ora è possibile reagire di conseguenza
- Se è ACTION_DOWN, è possibile salvare le coordinate xe y.
- Se è ACTION_ MOVE prendere il suo xey e calcolare la distanza dal corrispondente ACTION_DOWN. Se si tratta di più di un certo valore assunto, poi fare il rotolo e impostare il flag che indica che elementi sono stati fatti scorrere.
- Se è ACTION_UP controllare la bandiera. Se gli articoli non erano scorrere, fuoco la vostra azione e deselezionare il flag.
Probabilmente i calcoli non è quello che si dovrebbe fare in caso ACTION_MOVE, perché dovrebbe essere veloce, ma fare un tentativo.
Saluti!