3

「webservice」をチェックして「Managed」または「Unmanaged」ステータスを返すアプリケーションを作成しています。実行中の検索履歴をリストビューに保持しています(ユーザーがクリアするまで)。これはすべて機能しています。

ステータスが「管理対象」の場合は単一のテキストビューアイテムを緑色にし、「管理対象外」の場合は単一のアイテムを赤色にします。

    //This is the String Array which gets populated later.
    ArrayList<String> _searchHistoryList = new ArrayList<String>();

    //Here is where I override the getView to try to change the color.
    listAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, _searchHistoryList) {
    @Override
    public View getView(int position, View convertView,  ViewGroup parent) {
        TextView textView = (TextView) super.getView(position, convertView, parent);

        String _currentStatus = appSettings.getString("current_status", "na");

        int textColor;
        if (_currentStatus.equals("Managed")){
            textColor = R.color.green_text;
        } else {
            textColor = R.color.red_text;
        }
        textView.setTextColor(getResources().getColor(textColor));

        return textView;
    }
};
lvSearchHistory.setAdapter(listAdapter); 

上記のコードは、実際にはリストビュー全体を最後の検索項目の色に変えます。(例:最後の検索で「管理対象」の結果が得られた場合-単一のアイテムだけでなく、アイテムのリスト全体が緑色に変わります)。

誰かが私を正しい方向に向けることができますか?

4

3 に答える 3

2

あなたの問題の原因はこの呼び出しであるように私には見えます:

String _currentStatus = appSettings.getString("current_status", "na");

この呼び出しには、チェックしているリスト要素を示すものは何もないため、リスト内の各ビューに対して常に同じ結果が返されます。position パラメーターを渡し、それを使用して関連するリスト エントリのステータスを取得する必要があります (これを行う方法は、実際にリスト要素のステータスを取得する方法によって異なりますが、それほど難しくはありません)。

于 2012-10-03T03:11:40.003 に答える
1

次のコードを試してください

if (_currentStatus.equals("Managed")){
        textView.setTextColor(0xFF008B45);
    } else {
        textView.setTextColor(0xFFB0171F);
    }
于 2012-10-03T04:55:05.983 に答える
0

次のコードを試してください。

       int textColor;
    if (_currentStatus.equals("Managed")){
        textColor = R.color.green_text;
     textView.setTextColor(getResources().getColor(textColor));
    } else {
        textColor = R.color.red_text;
       textView.setTextColor(getResources().getColor(textColor));
    }


    return textView;
于 2012-10-03T03:23:32.803 に答える