Ho 4 TextViews
, 2 ImageViews
, 2 Buttons
e 2 widget che fanno parte di una definizione di riga in un ListView
. I dati provengono da XML e da SimpleAdapter
. Per accedere a questi TextViews
implementare lo ViewBinde
r in una classe personalizzata e sovrascrivere lo setViewValue
. Funziona e le due TextViews
che voglio cambiare dinamicamente sono gestite nello setViewValue
. Ciò che mi confonde è il motivo per cui le altre due TextView non vengono passate attraverso setViewValue
. Dico questo in base all'impostazione di un punto di interruzione in cui il thread di esecuzione viene inserito solo due volte. Mi aspettavo di vederlo 4 o più volte?Migliore comprensione di ViewBinder di SimpleAdapter
Ecco lo setViewValue
dove ho impostato un punto di interruzione.
@Override
public boolean setViewValue(View view, Object data, String text)
{
if(view.getId() == R.id.txtvw1)
{
//blah do some stuff
}
else if (view.getId() == R.id.txtvw2)
{
//Blah do some stuff
}
return true;
}
dichiarazione XML dei TextViews
(1 spettacoli e 4 non lo fa):
<TextView
android:id="@+id/txtvw1"
android:layout_centerHorizontal="true"
android:layout_width="185dp"
android:layout_height="25dp"
android:textSize="20sp"
android:layout_marginTop="60dp"
android:gravity="center"
android:inputType="none"
android:text="@string/str_StaticA"
android:textColor="#C0F700" />
<TextView
android:id="@+id/txtvw4"
android:layout_alignParentLeft="true"
android:layout_marginLeft="35dp"
android:layout_width="95dp"
android:layout_height="50dp"
android:textSize="18dp"
android:layout_marginTop="110dp"
android:gravity="center"
android:inputType="none"
android:text="IMHO:"
android:textColor="#FFBA19" />
Quindi, in sintesi Perché l'esecuzione immettere l'override solo due volte e si dà il caso ad essere l'esatto due voglio aggiornare?
Bene attraverso ulteriori letture e ragionamenti deduttivi sono venute alla luce alcune altre informazioni. Nella mia mente, mai Vista nell'Xriga XML passerebbe attraverso il ViewBinder
ma che era SBAGLIATO! Da quello che riesco a capire si collega il ViewBinder
al DataAdapter tramite setViewBinder
. Bene visto che al DataAdapter viene detto quale View da utilizzare per popolare i dati in esso contenuti, è logico che siano visualizzati solo i due. Ne stavo solo rivelando due.
Ecco un frammento in cui ho specificare le viste coinvolte nel processo di popolamento e passarle sul costruttore di DataAdapter:
String[] from = new String[] {"txtvw_PrevLift", "txtvw_PrevReps", "ActuLiftPikr", "ActulRepsPikr" };
int[] to = {R.id.txtvw_PrevLift, R.id.txtvw_PrevReps, R.id.ActuLiftPikr, R.id.ActulRepsPikr };
LiftDataAdapter LiftDataAdapter = new LiftDataAdapter(this, LiftDataMaps, R.layout.liftdatalayout, from, to);
Anche se questo sembra avere senso non so che il mio ragionamento deduttivo è preciso Aggiornerà man mano che trovo più informazioni.
Roger per nominare la classe e la variabile lo stesso. Hai ragione e stavo digitando velocemente per la pubblicazione. Per quanto riguarda il true return, capisco cosa stai dicendo restituendo SEMPRE true da setViewValue. Sto guardando il link fornito ora per trovare un modo migliore per tornare da setViewValue in modo che sia preciso non solo hardcoded. – GPGVM
Amico, è fantastico. Non sapevo che potevi dare un'occhiata al codice sorgente in quel modo. Doppio grazie – GPGVM