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.

È stato utile?

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

  1. Se è ACTION_DOWN, è possibile salvare le coordinate xe y.
  2. 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.
  3. 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!

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