2016-11-22 28 views
0

我是android.I中的一個新手,我嘗試在edittext中將浮點值存儲在數據庫中。然後我得到了這些儲值的總數。但我沒有得到小數點後的值。 這裏是我的代碼...沒有得到android中的小數點後的數字

package com.example.usaukglu.tablayoyt; 

import android.app.Activity; 
import android.content.Intent; 
import android.database.Cursor; 
import android.os.Bundle; 
import android.os.PersistableBundle; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.text.TextUtils; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 
import android.widget.Toast; 


public class Income extends AppCompatActivity implements View.OnClickListener { 

TextView amount, payer, note, show; 
EditText edi_amount, payer_name, edit_note; 
Button save, cancel; 
DatabaseHandler db; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.add_income); 

    save = (Button) findViewById(R.id.save); 
    cancel = (Button) findViewById(R.id.cancel); 

    amount = (TextView) findViewById(R.id.amount); 
    payer = (TextView) findViewById(R.id.payer); 
    note = (TextView) findViewById(R.id.note); 
    show = (TextView) findViewById(R.id.show); 

    edi_amount = (EditText) findViewById(R.id.edit_amount); 
    payer_name = (EditText) findViewById(R.id.edit_payer); 
    edit_note = (EditText) findViewById(R.id.edit_note); 
    //date= (EditText) findViewById(R.id.date); 

    db = new DatabaseHandler(this); 

    save.setOnClickListener(this); 
    cancel.setOnClickListener(this); 
} 

@Override 
public void onClick(View view) { 
    if (view.getId() == R.id.save) { 
     String amounts,payers,notes; 
     amounts=edi_amount.getText().toString(); 
     payers= payer_name.getText().toString(); 
     notes= edit_note.getText().toString(); 
     if(amounts.isEmpty()) 
     { 
      edi_amount.setError("Amounts should not be blank"); 
     } 
     else if (payers.isEmpty()){ 
      payer_name.setError("Payer name should not be blank"); 
     } 
     else { 
      Double a =new Double(amounts); 
      DataProvider provider = new DataProvider(""+a, payers, notes); 
      db.addInformation(provider); 
      Intent i = new Intent(this, MainActivity.class); 
      startActivity(i); 
     } 
    } 


    if (view.getId() == R.id.cancel) { 
     Intent i =new Intent(this,MainActivity.class); 
     startActivity(i); 
    } 


    } 

public void show(String data) { 
    show.setText(data); 
} 

} 

這裏是DataProvider類:

package com.example.usaukglu.tablayoyt; 

public class DataProvider { 
private String money; 
private String name; 
private String desc; 

public DataProvider(String money, String name, String desc) { 
    this.money = money; 
    this.name = name; 
    this.desc = desc; 
} 

public String getMoney() { 
    return money; 
} 

public void setMoney(String money) { 
    this.money = money; 
} 

public String getName() { 
    return name; 
} 

public void setName(String name) { 
    this.name = name; 
} 

public String getDesc() { 
    return desc; 
} 

public void setDesc(String desc) { 
    this.desc = desc; 
} 
} 

數據庫處理器類別:

package com.example.usaukglu.tablayoyt; 

import android.content.ContentValues; 
import android.content.Context; 
import android.database.Cursor; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteOpenHelper; 

import static com.example.usaukglu.tablayoyt.R.id.amount; 
import static com.example.usaukglu.tablayoyt.R.id.note; 
import static com.example.usaukglu.tablayoyt.R.id.payer; 



public class DatabaseHandler extends SQLiteOpenHelper { 
public static final String DATABASE_NAME = "income.db"; 
public static final String TABLE_NAME = "income_table"; 
public static final String ID="id"; 
public static final String AMOUNT = "amount"; 
public static final String PAYER_NAME = "payer"; 
public static final String NOTE = "note"; 

public DatabaseHandler(Context context) { 
    super(context, DATABASE_NAME, null, 1); 
} 

@Override 
public void onCreate(SQLiteDatabase sqLiteDatabase) { 
    String query = "CREATE TABLE " + TABLE_NAME + 
      "(" +ID+ " integer primary key autoincrement, " + AMOUNT + " real, " + PAYER_NAME + " text, " + NOTE + " text " + ")"; 
    sqLiteDatabase.execSQL(query); 

} 

@Override 
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) { 
    sqLiteDatabase.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME); 
    onCreate(sqLiteDatabase); 

} 

public void addInformation(DataProvider provider){ 
    SQLiteDatabase db = getWritableDatabase(); 
    ContentValues values=new ContentValues(); 
    values.put(AMOUNT,provider.getMoney()); 
    values.put(PAYER_NAME,provider.getName()); 
    values.put(NOTE,provider.getDesc()); 
    db.insert(TABLE_NAME, null, values); 
    db.close(); 

} 
public Cursor display() 
{ 
    SQLiteDatabase sqLiteDatabase=getReadableDatabase(); 
    Cursor res= sqLiteDatabase.rawQuery("SELECT * FROM "+TABLE_NAME,null); 
    return res; 
} 
public double getTotalOfAmount() { 
    SQLiteDatabase db = this.getReadableDatabase(); 
    Cursor c = db.rawQuery("SELECT SUM(AMOUNT) FROM " + TABLE_NAME, null); 
    c.moveToFirst(); 
    double i = c.getInt(0); 
    c.close(); 
    return i; 
} 
} 

FragmentIncome類whre我想o顯示數據: 包com.example.usaukglu.tablayoyt;

import android.database.Cursor; 
import android.database.sqlite.SQLiteDatabase; 
import android.os.Bundle; 
import android.support.annotation.Nullable; 
import android.support.v4.app.Fragment; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ListAdapter; 
import android.widget.ListView; 

import java.util.ArrayList; 
import java.util.List; 

public class FragmentIncome extends Fragment { 
ListView list; 
private DatabaseHandler handler; 
private SQLiteDatabase database; 
private List<DataProvider> amountList; 
private ListDataAdaptar listDataAdaptar; 

@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
    View view =inflater.inflate(R.layout.fragment_income,container,false); 
    list=(ListView) view.findViewById(R.id.listView); 
    amountList=new ArrayList<>(); 
    handler=new DatabaseHandler(getContext()); 
    database=handler.getReadableDatabase(); 

    Cursor cursor=handler.display(); 
    if(cursor.moveToFirst()){ 
     do { 
      String amount,payer,note; 
      amount= cursor.getString(cursor.getColumnIndex(handler.AMOUNT)); 
      payer=cursor.getString(cursor.getColumnIndex(handler.PAYER_NAME)); 
      note=cursor.getString(cursor.getColumnIndex(handler.NOTE)); 
      DataProvider provider=new DataProvider(amount,payer,note); 
      amountList.add(provider); 
      listDataAdaptar=new ListDataAdaptar(getContext(),R.layout.display_income_row,amountList); 
      list.setAdapter(listDataAdaptar); 

     }while (cursor.moveToNext()); 
    } 
    return view; 

} 
} 
+0

你的所有變量都是String類型的......你在哪裏希望小數點後的價值?請準確 – Moulesh

+0

我宣佈AMOUNT爲真 – Fatema

+0

您的provider.getMoney()返回字符串... – Moulesh

回答

0

您正在數據庫中使用字符串變量。在表中使用float數據類型來運行SUM查詢。

你DataProvider類應該像這個 -

public class DataProvider { 
private Float money; 
private String name; 
private String desc; 


public DataProvider(Float money, String name, String desc) { 
    this.money = money; 
    this.name = name; 
    this.desc = desc; 
} 

public Float getMoney() { 
    return money; 
} 

public void setMoney(Float money) { 
    this.money = money; 
} 

public String getName() { 
    return name; 
} 

public void setName(String name) { 
    this.name = name; 
} 

public String getDesc() { 
    return desc; 
} 

public void setDesc(String desc) { 
    this.desc = desc; 
} 
} 
+0

我已經改變它,但仍然不工作 – Fatema

+0

當我加1.5 + 1.5它顯示結果3.但是,當我加1.5+ 1它顯示結果2. – Fatema

+0

@Fatema更改您的這一行代碼 double i = c.getInt(0);加倍i = c.getDouble(0); – Rahul