2

ListView で 100 未満のすべての値を赤でペイントするにはどうすればよいですか?

私はに接続するListViewを持っていますmy_list.xml

私はこのようにカーソルを接続します:

public void update_list(String NN) {
        c = db.rawQuery(NN, null);
        startManagingCursor(c);
        String[] from = new String[]{"_id","Store","Makat","Des","Qty" };
        int[] to = new int[]{R.id.txtID, R.id.txtStore,R.id.txtMakat ,R.id.txtDes ,R.id.txtQty};
        SimpleCursorAdapter notes = new SimpleCursorAdapter (this, R.layout.my_list, c, from, to);
        setListAdapter(notes);
    }

どうやってするの ?

4

1 に答える 1

2

私の提案は、SimpleCursorAdapter を拡張する独自のアダプターを作成することです。その中で、すべての行ビューを作成する getView メソッドをオーバーライドする必要があります。

    class MyCustomAdapter extends SimpleCursorAdapter{
          private Context context;
          private Cursor c;

          public MyCustomAdapter(Context context, int layout, Cursor c,
            String[] from, int[] to) {
            super(context, layout, c, from, to);
            this.c = c;
            this.context = context;
          }

          @Override
          public View getView(int pos, View inView, ViewGroup parent) {

                LayoutInflater inflater = (LayoutInflater) context
                 .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                View rowView = inflater.inflate(R.layout.rowlayout, parent, false); 

                this.c.moveToPosition(pos);

                //get the value from cursor, evaluate it, and set the color accordingly
                int columnIndexOfQty = 4;
                int qty = c.getInt(columnIndexOfQty);

                if(qty < 100){
                  rowView.setBackgroundColor(Color.RED);
                }
                return rowView;
          }

        }

多少の誤差はあるかもしれませんが、ご理解頂ければと思います。

于 2012-08-23T11:22:02.423 に答える