1

と一緒に使用して、さまざまなスタイルの行を追加ListViewしたい があります。ArrayAdapter行はアプリケーションのさまざまな状態で作成され、さまざまな状態に応じて、行のスタイルを設定する必要があります (色など)。

ここにいくつかの疑似コードがあります:

作成時:

mArrayAdapter = new ArrayAdapter(this, R.layout.message);
mView = (ListView) findViewById(R.id.in);
mView.setAdapter(mArrayAdapter);

MessageHandler を使用する別のスレッドによってトリガーされるさまざまな状態で、メッセージを含むリストに行を追加します。

mArrayAdapter.add("Message");

これは正常に機能し、さまざまな状態に応じてメッセージがリストにポップアップ表示されますが、行のスタイルを変更したいと考えています。これを行う方法?ArrayAdapterカスタム Add() メソッドでカスタムを作成するソリューションはありますか?

4

1 に答える 1

1

あなたがしなければならないことは、カスタムを作成してメソッドArrayAdapterをオーバーライドするgetView()ことです。そこで、行に別のスタイルを適用するかどうかを決定できます。例えば:

class CustomArrayAdapter extends ArrayAdapter {
    CustomArrayAdapter() {
        super(YourActivity.this, R.layout.message);
    }

    public View getView(int position, View convertView,
                                            ViewGroup parent) {
        View row=convertView;

        if (row==null) {                                                    
            LayoutInflater inflater=getLayoutInflater();

            row=inflater.inflate(R.layout.message, parent, false);
        }

        // e.g. if you have a TextView called in your row with ID 'label'
        TextView label=(TextView)row.findViewById(R.id.label);
        label.setText(items[position]);

        // check the state of the row maybe using the variable 'position'
        if( I do not actually know whats your criteria to change style ){
            label.setTextColor(blablabla);
        }

        return(row);
    }
}
于 2010-07-15T13:10:44.553 に答える