Tôi có 4 TextViews
, 2 ImageViews
, 2 Buttons
và 2 tiện ích con là một phần của định nghĩa hàng trong một ListView
. Dữ liệu đến từ XML và SimpleAdapter
. Để truy cập vào các số TextViews
này, tôi triển khai ViewBinde
r trong một lớp tùy chỉnh và ghi đè số setViewValue
. Điều này làm việc và hai TextViews
Tôi muốn thay đổi động được xử lý trong setViewValue
. Điều gây nhầm lẫn với tôi là tại sao hai TextView khác của tôi không được chuyển qua setViewValue
. Tôi nói điều này dựa trên thiết lập một điểm ngắt nơi mà các chuỗi thực hiện chỉ nhập hai lần. Tôi đã mong đợi để xem nó 4 hoặc nhiều lần?Hiểu rõ hơn về ViewBinder của SimpleAdapter
Đây là số setViewValue
nơi tôi có bộ điểm ngắt.
@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;
}
khai xml của TextViews
(1 show và 4 không):
<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" />
Vì vậy, trong bản tóm tắt tại sao việc thực hiện nhập override chỉ hai lần VÀ nó chỉ như vậy sẽ xảy ra là chính xác hai tôi muốn cập nhật?
Cũng thông qua việc đọc thêm và lý luận suy luận thêm một vài thông tin đã được đưa ra ánh sáng. Trong tâm trí của tôi bao giờ Xem trong các hàng ListView
XML sẽ đi qua các ViewBinder
nhưng đó là WRONG! Từ những gì tôi có thể tìm, bạn đính kèm ViewBinder
vào DataAdapter qua setViewBinder
. Kể từ khi DataAdapter được cho biết những gì View (s) sử dụng để cư trú dữ liệu trong nó nó có ý nghĩa rằng chỉ có hai được hiển thị. Tôi chỉ tiết lộ hai cho nó.
Dưới đây là một đoạn mà tôi xác định xem tham gia vào quá trình populating và vượt qua chúng vào constructor của 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);
Trong khi điều này dường như có ý nghĩa tôi không biết rằng lập luận suy của tôi là chính xác. Sẽ cập nhật khi tôi tìm thêm thông tin.
Roger đặt tên cho lớp và biến giống nhau. Bạn đã đúng và tôi chỉ cần gõ nhanh để đăng. Đối với trở về sự thật tôi hiểu những gì bạn đang sayng bởi LUÔN trở về đúng từ setViewValue. Tôi đang nhìn vào liên kết được cung cấp ngay bây giờ để tìm một cách tốt hơn để trở về từ setViewValue vì vậy nó là chính xác không chỉ hardcoded. – GPGVM
Dude tuyệt vời. Tôi không biết bạn có thể có được một cái nhìn vào mã nguồn như thế. Double Cảm ơn bạn. – GPGVM