2009-02-01 11 views
8

Vorrei implementare un controllo ListView, che non può essere risolto senza il mio cursore. In questo momento, a seconda della riga su cui fai clic, ti porta a una nuova attività basata sulle informazioni stampate su quella riga (proprio come dovrebbe e come previsto). Vorrei comunque avere un pulsante per cancellare la riga, quindi un utente può premere qualsiasi parte della riga per avviare la nuova attività, ma se preme il pulsante su quella riga, cancella la riga (o avvia un'attività di eliminazione/funzione).Android: più azioni su una visualizzazione elenco - Focus Issue

Se si può guardare @ DroidRecord, hanno un layout simile a quello che sto cercando di raggiungere.

Grazie!

Chris.

risposta

4

qual è la tua domanda? Come aggiungere un pulsante a una riga di elenco?

Molto semplice, proprio come ci si aspetta verrà aggiunto al layout della riga.

Sfortunatamente questo renderà "intoccabile" l'intera riga. Lo sviluppatore di Google che ho chiesto mi ha detto che questo è di progettazione (per quanto mi ricordo) e che dovresti usare TouchDelegate per far fronte a questo. Come non ci sono campioni, nemmeno nella fonte Android, e solo molto sottile documentation che non ha funzionato per me

In ogni caso, sembra che non molte applicazioni utilizzano un pulsante nella riga elenco. Conosco solo il mio (newsrob, vedi Elenco articoli) e la Sveglia. Forse potresti usare un menu contestuale?

Altrimenti la soluzione brutta sarebbe aggiungere per chiamare setOnClickListener() sulla vista riga nel metodo getView.

Acclamazioni

+0

Puoi spiegare come impostarlo sulla visualizzazione di riga? La mia riga viene disegnata come parte della funzione di riempimento dei dati che chiamo utilizza SimpleCursorAdapter (questo, R.layout.row_detail, c, from, to); Quale metodo dovrei sovrascrivere per impostare un ascoltatore onclick. Quando lo provo con il metodo di creazione, la mia app si arresta in modo anomalo. – Chrispix

+0

Scusa, non ho familiarità con SimpleCursorAdapter ... Io uso direttamente il BaseAdapter, ma SimpleCursorAdapter dovrebbe funzionare più o meno lo stesso. Guardando la documentazione, sospetto che bindView sia il metodo giusto per te. Si ottiene la vista (rowview) passata lì. –

+0

continua .... Per capire perché l'app si arresta in modo anomalo (e includerla nella descrizione del problema) è possibile utilizzare "adb -e logcat". Questo ti mostrerà il file di log dell'emulatore in esecuzione. –

6

Un'altra possibile soluzione - è possibile utilizzare un ImageView posto del pulsante, e impostare onClickListener del ImageView (ad esempio, quando si sta gonfiando la vista delle cellule).

ImageView non è focheggiabile, pertanto non impedisce a OnListItemClick() di essere inviato e quando si fa clic sull'immagine, viene attivato solo il listener dell'immagine.

0

Vorrei ringraziare CdA per la sua hint sulla rimozione dello stato focusable al pulsante (s), mi ha salvato la giornata.

Ma per informazioni, dal momento che il pulsante non è più focusable - state_focused su < selector> XML -, il suo design non visualizzerà più per l'utente.

Questi pulsanti continueranno a visualizzare lo stato pressed, ma anche quando si fa clic in qualsiasi altro punto della vista principale (ovunque MA un altro pulsante)!

Tieni questo in mente, non potrebbe essere una buona soluzione per il tuo caso, ma funziona bene.

0

Ho provato questo per essere in grado di fare clic sui pulsanti, ma non ha funzionato per me Android: attivabile = "false" android: focusableInTouchMode = "false"

così quello che ho fatto è stato quello di cambiare il layout dell'attività per scrollview e quindi aggiungere un linerLayout al suo interno. dopo che è possibile aggiungere pulsanti al layout e ogni pulsante sarà cliccabile.

Problemi correlati