Khuất Duy Tân
Khuất Duy Tân

Reputation: 61

Change String to Decimal in TextView Android

public void addDataListViewShowAllNotes(){
    Bundle extras = getIntent().getExtras();
    String idUser = extras.getString("IdUser");
    Cursor cursor = db.getDataTableNote(Integer.parseInt(idUser));
    String form[] = new String []{db.KEY_CONTENT_NOTE, db.KEY_TYPE_NOTE, db.KEY_DATE_CREATE_NOTE, db.KEY_MONEY};
    int to[] = new int[] {R.id.textView_ContentNote, R.id.textView_TypeNote, R.id.textView_DateCreateNote, R.id.textView_MoneyNote};
    dataAdapter = new SimpleCursorAdapter(this, R.layout.item_note, cursor, form, to, 0);
    ListView listViewManagePage = (ListView) findViewById(R.id.listView_ManagePage);
    listViewManagePage.setAdapter(dataAdapter);
}

Here is my method which I use to add data to my ListView.

private String textOutput(String s){
    Locale loc = Locale.getDefault();
    NumberFormat nf = NumberFormat.getCurrencyInstance(loc);
    Double money = new Double(s);
    s = nf.format(money);
    return s;
}

Here is method which i use to change my text to number like money. Example "1000000" -> " 1,000,000. But when i set method textOutput on

  String form[] = new String []{db.KEY_CONTENT_NOTE, db.KEY_TYPE_NOTE, db.KEY_DATE_CREATE_NOTE, textOutput(db.KEY_MONEY)};

The text i get is "money". It's name of column in database. So how can i get my data in this column to use it.

Please help me

Upvotes: 0

Views: 65

Answers (1)

ρяσѕρєя K
ρяσѕρєя K

Reputation: 132982

db.KEY_MONEY refer to name of column which is money instead of value in db.

To show formatted data for money column in ListView row using SimpleCursorAdapter, need to call setViewBinder for ListView adapter. like:

    dataAdapter.setViewBinder(new ViewBinder() {
        public boolean setViewValue(View view, Cursor cursor, int columnIndex) {
            if (columnIndex == cursor.getColumnIndex(db.KEY_MONEY)) 
                    String moneyStr = cursor.getString(columnIndex);
                    TextView textView = (TextView) view;
                    textView.setText(textOutput(moneyStr));
                    return true;
             }
             return false;
        }

});

Upvotes: 1

Related Questions