2

我正在尝试创建一个简单的 ListView。ListView 上显示的项目只是我拥有的数组中的字符串。只是我只想将其中一个字符串以粗体显示。起初,当我使用一个长的 TextView 时,它包含 ScrollView 中带有换行标记的所有字符串,我可以简单地使用

<b> </b>

围绕我想在gui上以粗体显示的字符串,这样:

TextView tv.setText(Html.fromHtml(str));

但是在 ScrollView 中使用大的 TextView 会导致其他问题,并且当您使用 ListView 来解决这个问题时,这似乎是一个糟糕的选择。所以现在我使用 ListView,它从 ArrayList 中获取所有字符串并显示它们。只是尽管我试图扭转这种局面,但我似乎无法将一个项目的样式更改为粗体。我还尝试为每个字符串创建一个 TextView,然后将 TextViews 添加到列表中,但我不知道 ArrayAdapter 或 SimpleAdapter 是否可以做到这一点。SimpleAdapter 似乎只能将 TextView 作为资源 ID 获取,这对于列表中的所有项目都是相同的,这使我无法实现我想要的。

长话短说:在这里研究了这个问题后,我知道有一些方法可以为自定义适配器扩展 BaseAdapter ,该适配器允许列表的任何自定义布局,但真的没有其他方法吗?我真的需要实现 BaseAdapter 和 @override getItem 只是为了使一个项目加粗吗?这对我来说似乎很奇怪。有谁知道我可以将 TextViews 添加到 ListView 的方法吗?使用 ArrayAdapter 显示 TextViews toString :/
如果您知道另一种仅显示一个粗体项目的简单方法,我真的会提供任何帮助。谢谢!

4

3 回答 3

5

好吧,我终于决定通过制作一个扩展 ArrayAdapter 的自定义适配器来解决这个问题。那里有很多例子,但其中一些提供了很多额外的东西,并且在我看来过于复杂化了这个问题,我只是想体面地解决这个问题。我发现这个例子非常有用和友好,在我的研究中,我看到很多开发人员提出了类似的问题,所以我真的希望这对你也有帮助。

扩展 ArrayAdapter 的适配器并不太复杂,而且还允许您以一种相当简单的方式完全按照自己的方式使用布局。适配器完成后,您只需将 html 标签添加到源数组中的特定字符串,当您在适配器上绑定它们时,使用 Html.fromHtml 。这就是我解决它的方法。
如果有人知道是否有办法在 ListView 上的不同特定项目中制作粗体或彩色文本,而无需自己进行此调整(扩展 ArrayAdapter 并覆盖 getItem()),请与我们分享。
我希望这对其他人有帮助。

于 2012-09-24T18:50:29.913 回答
1

getView函数内部,引用TextView类似的内容:

text = (TextView) convertView.findViewById(R.id.textBox);

进而:

text.setTypeface(null, Typeface.BOLD);

你就完成了。

于 2012-09-23T16:17:58.860 回答
1

覆盖 ArrayAdapter 的 getView(...):

public View getView(int position, View convertView, ViewGroup parent) {
  View returnedView = super.getView(position, convertView, parent);

  if (position == specialPosition) {
    TextView text = (TextView) returnedView.findViewById(R.id.text);
    text.setTypeface(null, Typeface.BOLD);
  }

  return returnedView;
}
于 2016-07-29T21:39:25.637 回答