- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有 4 个 TextViews
、2 个 ImageViews
、2 个 Buttons
和 2 个小部件,它们是 ListView 中行定义的一部分
。数据来自 XML 和一个 SimpleAdapter
。为了访问这些 TextViews
,我在自定义类中实现了 ViewBinde
r 并覆盖了 setViewValue
。这有效,我想动态更改的两个 TextViews
在 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;
}
TextViews
的 xml 声明(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" />
总而言之,为什么执行只进入覆盖两次,而恰好是我想要更新的那两次?
通过额外的阅读和演绎推理,我们发现了更多的信息。在我看来,ListView
行中的 View XML 会通过 ViewBinder
,但这是错误的!据我所知,您可以通过 setViewBinder
将 ViewBinder
附加到 DataAdapter。好吧,因为 DataAdapter 被告知要使用什么 View 来填充其中的数据,所以只显示这两个 View 是有道理的。我只向它透露了两个。
这是一个 fragment ,其中我指定了填充过程中涉及的 View 并将它们传递给 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);
虽然这似乎有道理,但我不知道我的演绎推理是否准确。当我找到更多信息时会更新。
最佳答案
如果您在 SimpleAdapter
上设置一个 ViewBinder
所有 您声明的 Views
(在 中
array in your case)无论如何都会被传递给 ViewBinder
的 setViewValue()
方法。如果 setViewValue
方法没有返回 true
,这意味着该 View
的数据绑定(bind)失败(无论出于何种原因),那么您将获得默认操作(对于 TextView
),从数据 Hashmap
中设置文本。现在你声明 setViewValue
只为两个 TextViews
做一些事情(通过他们的 id 检查)并且返回 true
无论什么。当您为行布局中的其他 Views
输入 setViewValue
时,您将再次输入 setViewValue
,不匹配 ID (所以那些 Views
没有更新)并返回 true
(这将告诉适配器绑定(bind)成功并且这个 View
不需要任何更多的工作)。 A look at the source code SimpleAdapter.bindView
方法将向您展示如何使用 ViewBinder
。
此外,我看到您使用了自定义适配器,您确定不会干扰正常的 SimpleAdapter
逻辑吗?(也不要对类名和变量名使用相同的名称)
关于android - 更好地理解 SimpleAdapter 的 ViewBinder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10655867/
这是我的适配器 public class Vk_row_adapter extends SimpleAdapter { final String ATTRIBUTE_NAME_TEXT_NAME =
行中的空指针异常: listView.setAdapter(sAdapter); public class MyEmployeFragment extends Fragment { M
我想填写我的 ListView一些数据,我使用 SimpleAdapter .但是我觉得SimpleAdapter仅适用于 List>我有 List喜欢遵循代码: 我能做什么?有什么办法吗? List
代码编译没有错误,但结果在我的手机上只是一个空列表。那么问题是什么?这是我在 Activity 中的 onCreate 方法 super.onCreate(savedInstanceState
我使用了两个不同颜色的自定义行。但它返回同一行黑色。我也有一个黄色行,但它只返回一个黑色行。我无法理解它,因此我在下面分享了我的源代码。请帮助我 json_orders = json.getJSONA
我有一个带有过滤 inputSearch 和可点击项(我从 MySQL 数据库中获取)的 SimpleAdapter。 有时当我吃午饭时我的项目会出现错误: java.lang.RuntimeExce
我有一个与自定义 SimpleAdapter 关联的 ListView 。我制作了自定义 SimpleAdapter,因为我想将不同的事件处理程序与包含的 TextView 和 ImageView 相
我是 Android 开发新手,我花了几天时间尝试让我的应用程序运行,但没有成功。我正在使用 AsyncTask 和 SimpleAdapter,它返回数据,但是我的 JSON 有子项。它是注释的 J
我向 SQLite 添加了许多数据,但我的 ListView 仅显示最后插入的数据。所有行都有相同的值。 public void onResume() { super.onRe
我想根据应用程序中的某些值对我的 Listview 进行排序,但我不知道如何编码。我研究发现人们正在使用比较器和集合来对数组列表进行排序。基本上,我想按某些状态进行排序,例如接受或拒绝。该值存储在 T
我正在使用此代码创建一个 SimpleAdapter String[] from = { ATTRIBUTE_NAME_TEXT, ATTRIBUTE_NAME_CHECKED, ATTRIBUT
我正在开发一个应用程序,可以在 reomte 数据库上进行查询,使用 Json 和 PHP 通过 MySQL 稍后将结束 posgress,因为它更加开放。 我的问题是,我的 SimpleAdapte
当我运行程序时,每行中的 TextView 文本都从默认文本更改为无。 HashMap 中的数据未显示。 我的主要应用布局(main.xml): 我的列表项布局(myrow
我有一个 SimpleAdapter,我用它来显示两行 ListView 。我希望这个简单适配器上的第 15 个位置具有不同的格式,但是当我滚动 ListView 时,它会丢失位置并且格式会更改位置。
我正在尝试在 SET 按钮上填充 ListView 。当我选择值微调器并根据列表进行填充时。我面临的问题是我多次点击 SET 按钮,它会将项目添加到 ListView 。 setButton.s
我用 json 创建 Rss,当我从后台获取 jsonObject 时,在 postExecute 中我用对象结果创建 Map,然后出现错误LogCat 导致 SimpleAdapter 中的 Web
在我的应用程序中,我试图在单击列表项时将 TextView 设置为删除线。但是 Listview clik 项目不起作用。 代码如下: listView = ( ListView ) find
我正在从 web.xml 文件和图像中读取数据。我将图像作为 Bitmap bmImg 获取,并将其放入 Hashmap 中。但我确实知道如何修改我的 simpleAdapter 函数以在 image
我目前正在使用联系人的 ContentProvider 从设备中检索联系人,并允许用户通过在 EditText 中键入来过滤结果。 为此,我在 SimpleAdapter 上设置了一个过滤器查询,如下
我使用 SAXparser 从各种提要中获取数据,然后使用 SimpleListAdapter 将其添加到单个列表中, 我使用以下代码将 RSS Feed 添加到我的 SimpleListAdapte
我是一名优秀的程序员,十分优秀!