2

こんにちは、

制御できるデータソースからの値がいくつかあります。これらの値をListViewに詰め込んでいます。値は次のようになります。

「X冊の本が遅れています」。これはばかげた例ですが、私が理解しようとしているポイントを取得します。Xを除くすべては静的ですが、ArrayAdapterがListViewにデータを入力すると、表示されるのはXだけです。もちろんこれは理にかなっています。

この問題を解決するには2つの方法が考えられます。1つは、メッセージ全体が提供されるようにデータソースを変更することです。GUI側の作業は簡単になりますが、データベース担当者は間違いなく眉をひそめます。

一方、IDでTextViewを見つけて連結することができますが、ListViewは基になるデータの単なる表現であるため、データベースからデータを取得した後にデータを変更し、リストビューを更新/再描画しますか?

入力は喜んで受け入れられました。JB

4

1 に答える 1

2

Binder をリスト アダプターにアタッチし、Binder に設定されるデータを変更します。と呼ばれるアダプターがあると仮定しますmyAdapter

myAdapter.setViewBinder(new MyViewBinder());

public class MyViewBinder implements ViewBinder {
    @Override
    public boolean setViewValue(View view, Object data, String text){
        if(view instanceof TextView){
            ((TextView)view).setText(String.format("You have %s books overdue",text));
        }
    }
}

コードでに到達するViewBinderと、プログラムはリストにデータを入力しようとしています。次に、ビューがのインスタンスであるかどうかを確認し、TextViewそうであれば、この場合はデータ ソースの位置 X の要素である変数textを使用して、ソース データを含む形式の文字列を作成します。

各行に複数のビューが設定されている場合は、次の方法で ID を確認できます。view.getId()

ViewBinder がないと、アダプターで指定されたとおりにデータがビューにマップされますが、ViewBinder を使用すると、行の代替背景色や、コンテンツに応じてビューをクリック可能にするなど、あらゆる種類のクールなことを行うことができます。ソース、可能性は無限大です。

于 2012-05-16T22:18:38.730 に答える