Ich habe 4 TextViews
, 2 ImageViews
, 2 Buttons
und 2 Widgets, die Teil einer Zeile Definition in einem ListView
sind. Die Daten stammen von XML und SimpleAdapter
. Um auf diese TextViews
zuzugreifen, implementiere ich die ViewBinde
r in einer benutzerdefinierten Klasse und überschreiben Sie die setViewValue
. Dies funktioniert und die beiden TextViews
die ich dynamisch ändern möchte, werden im setViewValue
behandelt. Was mich verwirrt, ist, warum meine anderen zwei TextViews nicht durch setViewValue
geleitet werden. Ich sage dies basierend auf dem Setzen eines Haltepunkts, wo der Ausführungsthread nur zweimal eintritt. Ich habe erwartet, es 4 oder öfter zu sehen?Besseres Verständnis der ViewBinder des SimpleAdapter
Hier ist die setViewValue
, wo ich einen Haltepunkt gesetzt habe.
@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;
}
XML-Deklaration der TextViews
(1 zeigt und 4 nicht):
<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" />
Also zusammenfassend warum die Ausführung nur zweimal die Überschreibung eingeben und es passiert einfach so die genau zu sein zwei möchte ich updaten?
Gut durch zusätzliches Lesen und deduktives Denken sind einige weitere Informationen ans Licht gekommen. In meinen Gedanken jemals in der ListView
Zeile XML würde durch die ViewBinder
gehen, aber das war falsch! Von dem, was ich herausfinden kann, befestigen Sie die ViewBinder
an den DataAdapter über setViewBinder
. Nun, da dem DataAdapter gesagt wird, welche Views verwendet werden sollen, um die Daten darin zu füllen, macht es Sinn, dass nur die zwei angezeigt wurden. Ich habe nur zwei enthüllt. Hier
ist ein Ausschnitt, wo ich die Ansichten in der Besiedlungsprozess beteiligten angeben und geben sie an den Konstruktor des 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);
Während dieser Sinn zu machen scheint, dass ich nicht weiß, dass meine deduktiven ist exakt. Wird aktualisiert, da ich mehr Informationen finde.
Roger bei der Benennung der Klasse und Variable gleich. Du hast recht und ich habe gerade schnell für den Beitrag getippt. Was die Rückgabe von True betrifft, verstehe ich, was Sie sagen, indem Sie IMMER true von setViewValue zurückgeben. Ich schaue mir den Link an, der jetzt zur Verfügung gestellt wird, um einen besseren Weg zu finden, um von setViewValue zurückzukehren, so dass es nicht nur hartkodiert ist. – GPGVM
Alter, das ist großartig. Ich wusste nicht, dass man so in den Quellcode schauen kann. Doppelt danke. – GPGVM