Android 使用ArrayAdapter/SimpleAdapter在列表视图中加粗一项

Android 使用ArrayAdapter/SimpleAdapter在列表视图中加粗一项,android,listview,Android,Listview,我正在尝试创建一个简单的ListView。ListView上显示的项目只是我拥有的数组中的字符串。我只希望其中一个字符串以粗体显示。起初,当我使用一个长文本视图,其中包含滚动视图中所有带换行标记的字符串时,我可以简单地使用 <b> </b> 但是在ScrollView中使用一个大的TextView会导致其他问题,而且当您使用ListView来解决这个问题时,这似乎是一个不好的选择。现在我使用一个ListView,它从ArrayList获取所有字符串并显示它们。只是,无论

我正在尝试创建一个简单的ListView。ListView上显示的项目只是我拥有的数组中的字符串。我只希望其中一个字符串以粗体显示。起初,当我使用一个长文本视图,其中包含滚动视图中所有带换行标记的字符串时,我可以简单地使用

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

长话短说:在研究了这个问题之后,我知道有一些方法可以扩展BaseAdapter,使之成为一个自定义适配器,从而允许对列表进行任何自定义布局,但真的没有其他方法吗?我真的需要实现一个BaseAdapter和@override getItem来将一个项目设为粗体吗?我觉得这很奇怪。有人知道我可以将文本视图添加到ListView的方法吗?使用ArrayAdapter将文本视图显示为字符串:/

如果你知道另一种简单的方式来显示一个粗体项目,我真的很感谢任何帮助。谢谢

getView
函数中,引用
TextView
如下:

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

text.setTypeface(null, Typeface.BOLD);

完成了。

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

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

覆盖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;
}
在getView(int position、View convertView、ViewGroup parent)中,您可以使用该位置基于它设置条件格式。
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;
}