Java 如何显示ListView,将3个编辑文本存储在SQLite数据库的3列上?

Java 如何显示ListView,将3个编辑文本存储在SQLite数据库的3列上?,java,android,sqlite,listview,android-sqlite,Java,Android,Sqlite,Listview,Android Sqlite,我正在尝试建立一个应用程序,用户将输入3个编辑文本上的3个数据,然后存储到数据库的3列中。用户将其显示在列表视图中,该列表视图允许用户选择整个项目以编辑其中一个文本字段或删除整个项目。到目前为止,向数据库中添加数据的工作仍在进行,它被存储到3个不同的列中。至于显示,它只显示第一个编辑文本,即数据库中的第一列数据,即BodyTemp ViewRecords.java package mdad.project; import java.util.ArrayList; import com.examp

我正在尝试建立一个应用程序,用户将输入3个编辑文本上的3个数据,然后存储到数据库的3列中。用户将其显示在列表视图中,该列表视图允许用户选择整个项目以编辑其中一个文本字段或删除整个项目。到目前为止,向数据库中添加数据的工作仍在进行,它被存储到3个不同的列中。至于显示,它只显示第一个编辑文本,即数据库中的第一列数据,即BodyTemp

ViewRecords.java

package mdad.project;
import java.util.ArrayList;
import com.example.manandhowproject.R;
import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.Toast;

public class ViewRecords extends Activity {
    DatabaseHelper dbhelper;
    ListView listView;

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

        dbhelper = new DatabaseHelper(this);
        listView = (ListView) findViewById(R.id.listView);
        populateListView();
    }

    private void populateListView()
    {
        Cursor records = dbhelper.getRecords();
        ArrayList<String> listRec = new ArrayList<String>();
        while(records.moveToNext()){
            listRec.add(records.getString(1));
        }
    ListAdapter adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,listRec);
    listView.setAdapter(adapter);

    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
             String BTemp = adapterView.getItemAtPosition(i).toString();
             String HRate = adapterView.getItemAtPosition(i).toString();
             String Bmi = adapterView.getItemAtPosition(i).toString();

             Cursor data = dbhelper.getRecID(BTemp, HRate, Bmi);
             int recID = -1;
             while(data.moveToNext()){
                 recID = data.getInt(0);
             }
             if(recID > -1){

                 Intent editScreenIntent = new Intent(ViewRecords.this, EditDel.class);
                 editScreenIntent.putExtra("id",recID);
                 editScreenIntent.putExtra("Body Temperature",BTemp);
                 editScreenIntent.putExtra("Heart Rate",HRate);
                 editScreenIntent.putExtra("BMI",Bmi);
                 startActivity(editScreenIntent);
             }
             else{
                 Toast.makeText(getApplicationContext(), "No ID Associated", Toast.LENGTH_LONG).show();
             }
         }
     });
 }}
EditDel.java

package mdad.project;
import com.example.manandhowproject.R;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class EditDel extends Activity {

    Button btnSave,btnDelete;
    EditText etBT, etHR, etBMI;

    DatabaseHelper dbhelper;

    private String selectedBtemp, selectedHrate, selectedBMI;
    private int selectedID;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.editdel);
        btnSave = (Button) findViewById(R.id.btnSave);
        btnDelete = (Button) findViewById(R.id.btnDelete);
        etBT = (EditText) findViewById(R.id.etBT);
        etHR = (EditText) findViewById(R.id.etHR);
        etBMI = (EditText) findViewById(R.id.etBMI);
        dbhelper = new DatabaseHelper(this);


        Intent receivedIntent = getIntent();


        selectedID = receivedIntent.getIntExtra("id",-1); 
        selectedBtemp = receivedIntent.getStringExtra("BTemp");
        selectedHrate = receivedIntent.getStringExtra("Hrate");
        selectedBMI = receivedIntent.getStringExtra("Bmi");



        etBT.setText(selectedBtemp);
        etHR.setText(selectedHrate);
        etBMI.setText(selectedBMI);

        btnSave.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String bodytemp = etBT.getText().toString();
                String heartrate = etHR.getText().toString();
                String bmi = etBMI.getText().toString();
                if(!bodytemp.equals("") && !heartrate.equals("") && !bmi.equals("")){
                    dbhelper.updateBtemp(bodytemp,selectedID,selectedBtemp);
                    dbhelper.updateHrate(heartrate,selectedID,selectedHrate);
                    dbhelper.updateBMI(bmi,selectedID,selectedBMI);

                }else{
                    toastMessage("Please ensure all fields are filled.");
                }
            }
        });

        btnDelete.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
               dbhelper.deleteBtemp(selectedID,selectedBtemp);
               dbhelper.deleteHrate(selectedID,selectedHrate);
               dbhelper.deleteBMI(selectedID,selectedBMI);
                etBT.setText("");
                etHR.setText("");
                etBMI.setText("");
                toastMessage("removed from database");
            }
        });

    }

    /**
     * customizable toast
     * @param message
     */
    private void toastMessage(String message){
        Toast.makeText(this,message, Toast.LENGTH_SHORT).show();
    }
}

变量名必须相同

在查看记录中,将变量设置为

Intent editScreenIntent = new Intent(ViewRecords.this, EditDel.class);
editScreenIntent.putExtra("id",recID);
editScreenIntent.putExtra("Body Temperature",BTemp);
editScreenIntent.putExtra("Heart Rate",HRate);
editScreenIntent.putExtra("BMI",Bmi);
startActivity(editScreenIntent);
因此,在EditDel中,您需要使用相同的变量名
getIntent

 selectedBtemp = receivedIntent.getStringExtra("Body Temperature");
 selectedHrate = receivedIntent.getStringExtra("Heart Rate");
 selectedBMI = receivedIntent.getStringExtra("BMI");

您好,现在我可以通过的价值观,但是,似乎我的其他2个编辑文本得到同样的价值,从第一次编辑文本以及。这是我的主要问题,在ViewRecords上,它只显示数据库的第一列,也是第一个编辑文本记录,而不是我想要的全部3列。我还意识到并不是所有添加的记录都可以选择。有些人不断提示“无关联ID”,这是我在recID<-1时进行的检查,如上面的代码所示。请告知。我真的需要帮助你需要检查为什么你会得到
没有相关ID
。所有值都成功保存在数据库中了吗?您好,很抱歉回复太晚,我正在进行测试,以找出出现无ID关联的原因。很显然,每次当3个值的值不同时,例如80/50/40,就会出现该消息,没有相关ID。但是如果所有3个值都是相同的,比如80/80/80,那么只有我能够选择它并删除或更新。也。如果我将80/80/80更改为85/80/80,那么在我更新它之后。我无法再次选择它,它将显示无关联ID。顺便说一句,是的,我已经检查了数据库是否正常工作。您能显示
80/50/40
80/80/80
80/50/80
的recID值吗?
 selectedBtemp = receivedIntent.getStringExtra("Body Temperature");
 selectedHrate = receivedIntent.getStringExtra("Heart Rate");
 selectedBMI = receivedIntent.getStringExtra("BMI");