2

シンプルな ListView を作成しようとしています。ListView に表示される項目は、私が持っている配列の単なる文字列です。文字列の1つだけを太字で表示したいだけです。最初に、ScrollView 内に改行タグを含むすべての文字列を含む長い TextView を使用したとき、単純に使用できました

<b> </b>

このように、GUIで太字に表示したかった文字列の周り:

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

しかし、ScrollView 内で大きな TextView を使用すると、他の問題が発生し、ListView がまさにこの問題に対応している場合、悪い選択肢のように思えました。そこで、ArrayList からすべての文字列を取得して表示する ListView を使用します。ただ、これを好転させようとしても、1 つのアイテムのスタイルを Bold に変更できないようです。また、文字列ごとに TextView を作成してから、TextView をリストに追加しようとしましたが、ArrayAdapter または SimpleAdapter でこれを実行できるかどうかはわかりません。SimpleAdapter は TextView をリソース ID としてしか取得できないようです。これは、リスト内のすべての項目で同じであるため、私が望むものを達成できません。

簡単に言うと、ここでこの問題を調査した後、リストのカスタム レイアウトを許可するカスタム アダプターの BaseAdapter を拡張する方法があることを知りましたが、他に方法はありませんか? 1 つのアイテムを太字にするためだけに、BaseAdapter と @override getItem を実装する必要がありますか? これは私には奇妙に思えます。TextViews を ListView に追加する方法を知っている人はいますか? ArrayAdapter を使用すると、TextViews toString が表示されます:/
太字のアイテムを 1 つだけ表示する別の簡単な方法を知っている場合は、助けていただければ幸いです。ありがとう!

4

3 に答える 3

5

よし、ArrayAdapter を拡張するカスタム アダプターを作成することで、これを解決することにしました。そこには多くの例がありますが、それらのいくつかは多くの追加機能を提供し、私の意見ではこの問題を複雑にしすぎており、私はこれをきちんと解決したかっただけです. この例は非常に便利で使いやすいことがわかりました。ここでの私の調査では、多くの開発者が同様の質問をしているのを見たので、これがあなたにも役立つことを本当に願っています.

ArrayAdapter を拡張するアダプターはそれほど複雑ではありませんが、かなり単純な方法でレイアウトを正確に使用できます。アダプターが完成したら、ソース配列の特定の文字列に html タグを追加するだけで、それらをアダプターにバインドするときに Html.fromHtml を使用できます。これが私がそれを解決した方法です。
この調整を自分で行う必要なく (ArrayAdapter を拡張して getItem() をオーバーライドする)、ListView のさまざまな特定の項目に太字または色付きのテキストを作成する方法があるかどうかを誰かが知っている場合は、それを共有してください。
これが他の人に役立つことを願っています。

于 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 に答える