0

データベースの解析された文字列から満たされた条件に応じて、リストビューの行の色を変更しようとしています。これを達成する方法について頭を悩ませることはできません。

これを行う方法についての例があるようですが、私は本当に途方に暮れています。

私はこれを試しました:

Calms info = new Calms(this);

info.open();
String data = info.getFlareData();
info.close();

String arr[] = data.split("..\n\n");
System.out.println(arr);

ListView listView = getListView();

System.out.println("$$$$$$$$$$$$$$$"+listView.getChildCount()+"$$$$$$$$$$$$$$");
setListAdapter(new ArrayAdapter<String>(this, R.layout.simple_list_item_1, arr));

//System.out.println("****************"+getListView().getChildCount()+"**************");


for(int i = 0; i < arr.length; i++){
    System.out.println("arr["+i+"] = " + arr[i].trim());

    if(arr[i].contains("High Severity"))
    {
        // String highArr = arr[i];
        listView.getChildAt(i).setBackgroundColor(Color.RED);
    }
    else if(arr[i].contains("Low Severity"))
    {
        listView.getChildAt(i).setBackgroundColor(Color.GREEN);
    }
    else if(arr[i].contains("Medium Severity"))
    {
        listView.getChildAt(i).setBackgroundColor(Color.rgb(255, 136, 0));
    }


} 
4

3 に答える 3

0

ArrayAdapter を拡張する必要があります。メソッド内:

public View getView(int position, View convertView, ViewGroup parent)

行の色を変更できます。いくつかの例:

public class OneRecordAdapter extends ArrayAdapter<String> {

private ArrayList&lt;String&gt; arhmAllForList;
    private Context context;
public OneRecordCursorAdapter(Context context, ArrayList&lt;String&gt; hm) {
        super(context, R.layout.raw_checking_knowledge, hm);
        arhmAllForList = hm;
        this.context = context;
    }
@Override
    public View getView(int position, View convertView, ViewGroup parent) {
        LayoutInflater inflater = (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View rowView = inflater.inflate(
                R.layout.row, parent, false);
        ...
        if ( /*some condition*/ ) {
            rowView.setBackgroundColor(Color.RED);
        } else {
            rowView.setBackgroundColor(Color.GREEN);
        }
        ...
        return rowView;
    }
}
于 2013-02-28T16:09:21.547 に答える
0

自分Adapter用に自分で書く必要がありますListView。アダプターでは、すべてのアイテムの背景色を問題なく設定できます。

Web 上でカスタム アダプターを作成するためのチュートリアルがいくつかあります。

于 2013-02-28T12:30:27.763 に答える
0

これを試してください:

ArrayAdapter<String> ad = new ArrayAdapter<String>(this, R.layout.simple_list_item_1, arr){
            @Override
            public View getView(int position, View convertView, ViewGroup parent) {

                TextView tv =  (TextView) super.getView(position, convertView, parent);
                String str = tv.getText().toString();

                if(str.contains("High Severity"))
                {
                    // String highArr = arr[i];
                    tv.setBackgroundColor(Color.RED);
                }
                else if(str.contains("Low Severity"))
                {
                    tv.setBackgroundColor(Color.GREEN);
                }
                else if(str.contains("Medium Severity"))
                {
                    tv.setBackgroundColor(Color.rgb(255, 136, 0));
                }
                return tv;
            }
        };

        setListAdapter(ad);
于 2013-02-28T12:53:01.753 に答える