У меня есть 4 TextViews
, 2 ImageViews
, 2 Buttons
и 2 виджета, которые являются частью строки определение в ListView
. Данные поступают из XML и SimpleAdapter
. Чтобы получить доступ к этим TextViews
, я реализую ViewBinde
r в пользовательском классе и переопределяю setViewValue
. Это работает, и два TextView
, которые я хочу динамически изменить, обрабатываются в setViewValue
. Что меня смущает, так это то, почему мои два других TextView не проходят через setViewValue
. Я говорю это, основываясь на установке точки останова, когда поток выполнения входит только дважды. Я ожидал увидеть это 4 или более раз?
Вот setViewValue
, где у меня установлена точка останова.
@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-декларация TextViews
(1 показывает, а 4 нет):
<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" />
Итак, в заключение, почему выполнение входит в переопределение только дважды, И так получилось, что это именно два I хотите обновить?
Благодаря дополнительному чтению и дедуктивным рассуждениям стало известно еще несколько фрагментов информации.На мой взгляд, когда-либо View в строке ListView
XML проходил через ViewBinder
, но это было НЕПРАВИЛЬНО! Насколько я понимаю, вы прикрепляете ViewBinder
к DataAdapter через setViewBinder
. Что ж, поскольку DataAdapter сообщается, какие представления использовать для заполнения данных в нем, имеет смысл показывать только два. Я только раскрывал два к этому.
Вот фрагмент, в котором я указываю представления, участвующие в процессе заполнения, и передаю их конструктору 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);
Хотя это кажется логичным, я не уверен, что мои дедуктивные рассуждения точны. Буду обновлять, когда найду больше информации.