Java 使用tableview格式将所有数据显示到listview

Java 使用tableview格式将所有数据显示到listview,java,android,sqlite,listview,tableview,Java,Android,Sqlite,Listview,Tableview,下面是我已经创建的数据库,它运行良好,可以将数据保存到数据库中,我对这个android项目非常陌生,需要关于如何显示保存在listview中的所有数据的指导 import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.SQLException; import android.database.sqlite.

下面是我已经创建的数据库,它运行良好,可以将数据保存到数据库中,我对这个android项目非常陌生,需要关于如何显示保存在listview中的所有数据的指导

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


public class BmiDatabase {

    private data helper;
    private SQLiteDatabase help;
    private Context context;

    public BmiDatabase(Context context){
        helper = new data(context);
        help = helper.getWritableDatabase();
        this.context=context;
    }

    public long insertData(String bmi, String status, String weight){
        SQLiteDatabase db = helper.getWritableDatabase();
        ContentValues contentValues = new ContentValues();
        contentValues.put(data.NAME, bmi);
        contentValues.put(data._STATUS, status);
        contentValues.put(data.WEIGHT, weight);
        long id = db.insert(data.DATABASE_TABLE, null, contentValues);
        db.close();
        return id;
    }
    public String getAllData(){
        SQLiteDatabase db = helper.getWritableDatabase();

        String[] columns = {data.UID, data.NAME, data._STATUS, data.WEIGHT};
        Cursor cursor = db.query(data.DATABASE_TABLE, columns, null, null, null, null, null);
        StringBuffer buffer = new StringBuffer();
        while (cursor.moveToNext())
        {
           // int index1 = cursor.getColumnIndex(data.UID);
           // int cid = cursor.getInt(index1);

            int cid = cursor.getInt(0);
            String bmi = cursor.getString(1);
            String status = cursor.getString(2);
            String weight = cursor.getString(3);
            buffer.append(cid +" "+bmi+" kg "+status+" "+weight+ "\n");
        }
        return buffer.toString();
    }


    public static class data extends SQLiteOpenHelper{

        private Context context;
        private static final String DATABASE_NAME = "bmidatabase";
        private static final String DATABASE_TABLE = "bmitable";
        private static final int DB_VERSION = 7;
        public static final String UID = "_id";
        public static final String NAME = "Bmi";
        public static final String _STATUS = "Status";
        public static final String WEIGHT = "Weight";
        private static final String DROP_TABLE= "DROP TABLE IF EXISTS "+DATABASE_TABLE;

        private static final String CREATE_TABLE = "CREATE TABLE "+DATABASE_TABLE+" ("+UID+" INTEGER PRIMARY KEY AUTOINCREMENT ," +
                " "+NAME+" VARCHAR(255)," +
                " "+_STATUS+" VARCHAR(255)," +
                ""+WEIGHT+" VARCHAR(255));";

        public data(Context context){
            super(context, DATABASE_NAME, null, DB_VERSION);
            this.context=context;
        }


        public void getAllData(){

        }

        @Override
        public void onCreate(SQLiteDatabase db) {

            try{
                db.execSQL(CREATE_TABLE);
                Message.message(context,"Database Created");
            }
            catch (SQLException e){
                Message.message(context, "Failed" +e);
            }
        }

        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            try{
                Message.message(context, "DATABASE DELETED");
                db.execSQL(DROP_TABLE);
                onCreate(db);
            }
            catch(SQLException e){
                Message.message(context, "SQL FAILED");
            }
        }
    }

}
下面是我的mainactivity的代码,它显示我可以使用toast来显示它,但是我不知道如何调用该方法来用这些数据填充列表视图

import android.app.Activity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;


public class MainActivity extends Activity {

    //private static DataHelper DataHelper;
    //DataHelper helper = new DataHelper(this);

    private static BmiDatabase data;

    private EditText weightinputid;
    private EditText heightinputid;
    private Button buttonBMI, save, detail;
    private TextView BMIStatus;
    private TextView BMIfinal;
    private double weight =0.0;
    private double height =0.0;



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
     //  setupDB();
      //  setDB();
        initializeApp();
    }

    private void initializeApp(){
        weightinputid = (EditText) findViewById(R.id.weightid);
        heightinputid = (EditText) findViewById(R.id.heightid);
        buttonBMI = (Button) findViewById(R.id.buttonBMI);
        BMIfinal= (TextView) findViewById(R.id.BMIfinal);
        BMIStatus = (TextView) findViewById(R.id.BMIstatus);
        save = (Button) findViewById(R.id.button);
        detail = (Button)findViewById(R.id.button1);
        data = new BmiDatabase(this);

    }
    public void calculateBMI (View v){

        String status;

        weight= Double.parseDouble(weightinputid.getText().toString());
        height= Double.parseDouble(heightinputid.getText().toString());

        double bmi = weight/(height/100*height/100);
        String result = String.format("%.2f", bmi);
        Log.d("MainActivity", result);
        BMIfinal.setText(result, TextView.BufferType.NORMAL);

        if(bmi < 16){
            status = "Seriously Underweight";
        }
        else if(bmi >=16.0 && bmi < 18.0){
            status = "Underweight";
        }
        else if(bmi >=18.0 && bmi <24.0){
            status = "Normal";
        }
        else{
            status = "Obese";
        }

        BMIStatus.setText(status);

    }
        public void save(View v){
            String bmi = BMIfinal.getText().toString();
            String status = BMIStatus.getText().toString();
            String weight = weightinputid.getText().toString();

        long id = data.insertData(weight, bmi, status);
        if(id<0)
        {
            Message.message(this, "");
        }
        else
        {
            Message.message(this, "");
        }

    }
    public void detail(View v){
        String d = data.getAllData();
        Message.message(this, d);
    }

    }

您必须以类似于表的形式在listview中显示数据,对吗?使用自定义适配器&在列表视图中使用自定义列表视图项如果我是对的,并且您希望使用自定义适配器,这会有所帮助:是的,可以显示bmi、状态和权重的列表视图,但采用表格格式,您只需创建自定义列表视图项,看看上面的链接,他是如何创建listview自定义项的。我会先尝试创建它,谢谢