单击列表视图时如何检索多个数据?

时间:2018-03-26 17:53:07

标签: java android sql listview android-arrayadapter

我希望在单击列表项时,我在SQL中保存的所有编辑文本内容都显示在编辑帐单活动中,但我只能检索名称并在意图中再次显示它。如果我在editbills_activity中另外保存现有记录,则应该使用新数据更新记录,而不是保存另一个数据。 这是我的DBAdapter.java

package com.example.dhruv.bills;
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;
import android.util.Log; 
public class DBAdapter {
public static final String KEY_ROWID = "id";
public static final String KEY_NAME = "name";
public static final String KEY_AMOUNT = "amount";
public static final String KEY_DUEDATE = "duedate";
private static final String TAG = "DBAdapter";

private static final String DATABASE_NAME = "billsdb";
private static final String DATABASE_TABLE = "bills";
private static final int DATABASE_VERSION = 2;

private static final String DATABASE_CREATE =
        "create table if not exists assignments (id integer primary key autoincrement, "
                + "name VARCHAR not null, amount VARCHAR, duedate date );";

// Replaces DATABASE_CREATE using the one source definition
private static final String TABLE_CREATE =
        "CREATE TABLE IF NOT EXISTS " + DATABASE_TABLE + "(" +
                KEY_ROWID + " INTEGER PRIMARY KEY, " + // AUTOINCREMENT NOT REQD
                KEY_NAME + " DATE NOT NULL, " +
                KEY_AMOUNT + " VARCHAR ," +
                KEY_DUEDATE + " DATE " +
                ")";

private final Context context;

private DatabaseHelper DBHelper;
private SQLiteDatabase db;

public DBAdapter(Context ctx)
{
    this.context = ctx;
    DBHelper = new DatabaseHelper(context);
}

private static class DatabaseHelper extends SQLiteOpenHelper
{
    DatabaseHelper(Context context)
    {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db)
    {
        db.execSQL(TABLE_CREATE); // NO need to encapsulate in try clause
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
    {
        Log.w(TAG, "Upgrading database from version " + oldVersion + " to "
                + newVersion + ", which will destroy all old data");
        db.execSQL("DROP TABLE IF EXISTS contacts"); //????????
        db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE);
        onCreate(db);
    }
}

//---opens the database---
public DBAdapter open() throws SQLException
{
    db = DBHelper.getWritableDatabase();
    return this;
}

//---closes the database---
public void close()
{
    DBHelper.close();
}

//---insert a record into the database---
public long insertRecord(String name, String amount, String duedate)
{
    ContentValues initialValues = new ContentValues();
    initialValues.put(KEY_NAME, name);
    initialValues.put(KEY_AMOUNT, amount);
    initialValues.put(KEY_DUEDATE, duedate);
    //return db.insert(DATABASE_TABLE, null, initialValues);
    // Will return NULL POINTER EXCEPTION as db isn't set
    // Replaces commented out line
    return DBHelper.getWritableDatabase().insert(DATABASE_TABLE,
            null,
            initialValues
    );
}

//---deletes a particular record---
public boolean deleteContact(long rowId)
{
    return db.delete(DATABASE_TABLE, KEY_ROWID + "=" + rowId, null) > 0;
}

//---retrieves all the records--- SEE FOLLOWING METHOD
public Cursor getAllRecords()
{SQLiteDatabase db = DBHelper.getWritableDatabase();
    String query ="SELECT * FROM " + DATABASE_TABLE;
    Cursor data = db.rawQuery(query,null);
    return data;
}


//As per getAllRecords but using query convenience method
public Cursor getAllAsCursor() {
    return DBHelper.getWritableDatabase().query(
            DATABASE_TABLE,
            null,null,null,null,null,null
    );
}
public Cursor getItemID(String name) {
    SQLiteDatabase db = DBHelper.getWritableDatabase();
    String query = "SELECT " + KEY_ROWID + " FROM " + DATABASE_TABLE +
            " WHERE " + KEY_NAME + " = '" + name + "'";
    Cursor data = db.rawQuery(query, null);
    return data;
}
//---retrieves a particular record--- THIS WILL NOT WORK - NO SUCH TABLE


/* public Cursor getRecord()
{String query1 ="SELECT * FROM" + KEY_TITLE;
    Cursor mCursor = db.rawQuery(query1,null);
    if (mCursor != null) {
        mCursor.moveToFirst();
    }
    return mCursor;
}*/

// Retrieve a row (single) according to id
public Cursor getRecordById(long id) {
    return DBHelper.getWritableDatabase().query(
            DATABASE_TABLE,
            null,
            KEY_ROWID + "=?",
            new String[]{String.valueOf(id)},
            null,null,null
    );
}


//---updates a record---


/* public boolean updateRecord(long rowId, String name, String amount, String duedate)
{
    ContentValues args = new ContentValues();
    args.put(KEY_NAME, name);
    args.put(KEY_AMOUNT, amount);
    args.put(KEY_DUEDATE, duedate);
    String whereclause = KEY_ROWID + "=?";
    String[] whereargs = new String[]{String.valueOf(rowId)};
    // Will return NULL POINTER EXCEPTION as db isn't set
    //return db.update(DATABASE_TABLE, args, KEY_ROWID + "=" + rowId, null) > 0;
    // Replaces commented out line
    return DBHelper.getWritableDatabase().update(DATABASE_TABLE,
            args,
            whereclause,
            whereargs
    ) > 0;
}*/
}

这是我的Bills.java (MainActivity)

问题: Bills.java具有列表视图,只要单击列表视图中的项目,它就会显示意图,但不会显示金额和日期或更新记录。相反,它会保存另一条记录。

解决方案:我想要检索它并显示所有内容(名称,数量,用量),而不是保存另一条记录,它应该更新它。

package com.example.dhruv.bills;

import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.Toast;
import java.util.ArrayList;

public class bills extends AppCompatActivity {
DBAdapter dbAdapter;
ListView mrecycleview;
private static final String TAG ="assignments";
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_bills);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    mrecycleview =(ListView) findViewById(R.id.mRecycleView);
    dbAdapter = new DBAdapter(this);
    // mlistview();
    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent i = new Intent(getApplicationContext(),Editbills.class);
            startActivity(i);
        }
    });
    mlistview();
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_bills, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
        return true;
    }

    return super.onOptionsItemSelected(item);
}


 private void mlistview(){
    Log.d(TAG,"mlistview:Display data in listview");
    Cursor mCursor = dbAdapter.getAllRecords();
    ArrayList<String> listData = new ArrayList<>();
    while (mCursor.moveToNext()){
        listData.add(mCursor.getString(1));
    }
    ListAdapter adapter = new ArrayAdapter<>(this,android.R.layout.simple_list_item_1,listData);
    mrecycleview.setAdapter(adapter);
  mrecycleview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
      @Override
      public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
          String name = adapterView.getItemAtPosition(i).toString();
          Log.d(TAG, "onItemClick: You Clicked on " + name);
          Cursor data = dbAdapter.getItemID(name); //get the id associated with that name
          int itemID = -1;
          while(data.moveToNext()){
              itemID = data.getInt(0);
          }
          if(itemID > -1){
              Log.d(TAG, "onItemClick: The ID is: " + itemID);
              Intent editScreenIntent = new Intent(bills.this, Editbills.class);
              editScreenIntent.putExtra("id",itemID);
              editScreenIntent.putExtra("name",name);
              startActivity(editScreenIntent);

          }
          else{

          }
      }
  });


}
}

这是我的editbills.java代码

package com.example.dhruv.bills;

import android.content.ContentValues;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;


import java.util.ArrayList;

public class Editbills extends AppCompatActivity {
Button button;
private static final String Tag= "assignments";
DBAdapter db = new DBAdapter(this);
private String selectedName;
private int selectedID;
DBAdapter dbAdapter;
private EditText editText,editText2,editText3;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_editbills);
    button=(Button)findViewById(R.id.button);
    editText =(EditText)findViewById(R.id.editText);
    editText2=(EditText)findViewById(R.id.editText2);
    editText3 =(EditText)findViewById(R.id.editText3);
    //get the intent extra from the ListDataActivity
    Intent receivedIntent = getIntent();

    //now get the itemID we passed as an extra
    selectedID = receivedIntent.getIntExtra("id",-1); //NOTE: -1 is just the default value

    //now get the name we passed as an extra
    selectedName = receivedIntent.getStringExtra("name");

    //set the text to show the current selected name
    editText.setText(selectedName);
    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Log.d("test", "adding");
            db.open();
            long id = db.insertRecord(editText.getText().toString(), editText2.getText().toString(), editText3.getText().toString());
            db.close();
            Toast.makeText(Editbills.this," Added", Toast.LENGTH_LONG).show();
            Intent q = new Intent(getApplicationContext(),bills.class);
            startActivity(q);

        }
    });


}

}

1 个答案:

答案 0 :(得分:0)

有两个部分/问题。

首先检索数据,以便可以在editbills活动中显示,您可以利用与{{1}一起传递给活动的行 id 方法。

我建议在 getRecordById 课程中添加一个方法很简单。

editbills

您可以使用以下方法从Intent检索 id 后调用上述方法: -

    private void populateDisplay(int id) {

        Cursor csr = dbAdapter.getRecordById(id);
        if (csr.moveToFirst()) {
            editText.setText(csr.getString(csr.getColumnIndex(DBAdapter.KEY_NAME)));
            editText2.setText(csr.getString(csr.getColumnIndex(DBAdapter.KEY_AMOUNT)));
            editText3.setText(csr.getString(csr.getColumnIndex(DBAdapter.KEY_DUEDATE)));
        }
        csr.close();
    }

要根据EditTexts的内容进行更新,请在 DBAdapter.java 中取消 populateDisplay(selectedID); 方法并更改: - < / p>

updateRecord

来: -

button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        Log.d("test", "adding");
        db.open();
        long id = db.insertRecord(editText.getText().toString(), editText2.getText().toString(), editText3.getText().toString());
        db.close();
        Toast.makeText(Editbills.this," Added", Toast.LENGTH_LONG).show();
        Intent q = new Intent(getApplicationContext(),bills.class);
        startActivity(q);

    }
});

您还需要添加一行初始化 mButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (dbAdapter.updateRecord( selectedId, editText.getText().toString(), editText2.getText().toString(), editText3.getText().toString()) ) { Log.d("TEST","Row successfully updated."); Toast.makeText(getApplicationContext(),"Row Updated.",Toast.LENGTH_LONG).show(); populateDisplay(selectedId); } else { Toast.makeText(getApplicationContext(),"Row not Updated",Toast.LENGTH_LONG).show(); } Intent q = new Intent(getApplicationContext(),bills.class); startActivity(q); } }); ,即dbAdapter i.d建议在行dbAdapter = new DBAdapter(this);之后立即添加此行

  • 注意上述代码原则上未经过全面测试,因此可能包含错误。

编辑完整的工作示例: -

以下代码基本上是上述代码的实现,除了使用 Bill 类进行修改。而不是setContentView(R.layout.activity_editbills);作为适配器的来源,而是ArrayList<String>

因此,所有数据(id,名称,金额和duedate)都可用。

您应该注意到我已覆盖ArrayList<Bill>方法以返回结合名称金额 duedate <的字符串<\ n / strong>即可。 toString使用对象的ArrayAdapter方法填充视图。

说临界值是 rowid rowid 的别名,因为即使其他数据相同,它也可用于标识行(由于toString方法而多次运行此示例时会发生这种情况。因此,只有 id 被提取并在长按单击列表中的项目时才会传递给Editbills活动(仅从单击中更改以减少意外使用的可能性)

Bill.java

addSomeData

MainActivity.java

这相当于你的Bills.java没有很多膨胀,比如FAB。 : -

public class Bill {

    private long id;
    private String name;
    private String amount;
    private String duedate;

    public Bill(long id, String name, String amount, String duedate) {
        this.id = id;
        this.name = name;
        this.amount = amount;
        this.duedate = duedate;
    }
    /*
            Note if this Constructor used then setId should be used
     */
    public Bill(String name, String amount, String duedate) {
        new Bill(0,name,amount,duedate);
    }

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

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

    public String getAmount() {
        return amount;
    }

    public void setAmount(String amount) {
        this.amount = amount;
    }

    public String getDuedate() {
        return duedate;
    }

    public void setDuedate(String duedate) {
        this.duedate = duedate;
    }

    /*
            As ArrayAdapter uses toString method change this
            to return all items
     */
    @Override
    public String toString() {
        return name + " " + amount + " " + duedate;
    }
}
  • 注意以上每次运行时都会添加3行。

Editbills.java

public class MainActivity extends AppCompatActivity {

    public static final String ID_INTENTEXTRA = DBAdapter.KEY_ROWID + "_INTENTEXTRA"; //<<<< ADDED

    DBAdapter mDBAdapter;
    Cursor mCsr;
    ListView mrecycleview;
    ArrayAdapter adapter; //<<<< NOT ListAdapter
    Context context; // ADDED
    private static final String TAG ="assignments";

    ArrayList<Bill> mBillList = new ArrayList<>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        context = this;
        mrecycleview = this.findViewById(R.id.mRecycleView);

        mDBAdapter = new DBAdapter(this);
        addSomeData();

        adapter = new ArrayAdapter<Bill>(
                this,
                android.R.layout.simple_list_item_1,
                mBillList
        );
        mrecycleview.setAdapter(adapter);
        mrecycleview.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
            @Override
            public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
                Bill b = (Bill) adapter.getItem(position);
                Intent i = new Intent(context,Editbills.class);
                i.putExtra(ID_INTENTEXTRA,b.getId()); //Get ID
                startActivity(i);
                return true;
            }
        });
        rebuildBillList();
    }

    //<<<< ADDED Method to refresh the ListView resumed
    @Override
    protected void onResume() {
        super.onResume();
        rebuildBillList();
    }

    // Add some data (note will add 2 rows each time it is run)
    private void addSomeData() {
        mDBAdapter.insertRecord("Bill1","2018-10-02","English");
        mDBAdapter.insertRecord("Bill2","2018-09-03","Mathematics");
        mDBAdapter.insertRecord("Bill3","2018-11-04", "Geography");
    }

    public void rebuildBillList() {
        mBillList.clear();
        mCsr = mDBAdapter.getAllAsCursor();
        while (mCsr.moveToNext()) {
            mBillList.add(new Bill(
                            mCsr.getLong(mCsr.getColumnIndex(DBAdapter.KEY_ROWID)),
                            mCsr.getString(mCsr.getColumnIndex(DBAdapter.KEY_NAME)),
                            mCsr.getString(mCsr.getColumnIndex(DBAdapter.KEY_AMOUNT)),
                            mCsr.getString(mCsr.getColumnIndex(DBAdapter.KEY_DUEDATE))
                    )
            );
        }
        adapter.notifyDataSetChanged();
    }
}
  • 基本上按照原来的答案。

DBAdapter.java

public class Editbills extends AppCompatActivity {
    Button button;
    private static final String Tag = "assignments";
    DBAdapter db = new DBAdapter(this);
    private String selectedName;
    private long selectedID;
    DBAdapter dbAdapter;
    private EditText editText,editText2,editText3;
    Context context;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_editbills);
        context = this;
        dbAdapter = new DBAdapter(this); //<<<< ADDED
        button=(Button)findViewById(R.id.button);
        editText =(EditText)findViewById(R.id.edittext);
        editText2=(EditText)findViewById(R.id.edittext2);
        editText3 =(EditText)findViewById(R.id.edittext3);
        //get the intent extra from the ListDataActivity
        Intent receivedIntent = getIntent();

        //now get the itemID we passed as an extra
        selectedID = receivedIntent.getLongExtra(MainActivity.ID_INTENTEXTRA,-1L); //NOTE: -1 is just the default value
        populateDisplay(selectedID);

        //now get the name we passed as an extra
        //selectedName = receivedIntent.getStringExtra("name");

        //set the text to show the current selected name
        //editText.setText(selectedName); <<<< commented out
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                /*
                Log.d("test", "adding");
                db.open();
                long id = db.insertRecord(editText.getText().toString(), editText2.getText().toString(), editText3.getText().toString());
                db.close();
                Toast.makeText(Editbills.this," Added", Toast.LENGTH_LONG).show();
                */
                /*
                * <<<< Not the way as it ends/closes the existing activity
                Intent q = new Intent(getApplicationContext(),MainActivity.class);
                startActivity(q);
                */
                String toast = "Updated.";
                if (dbAdapter.updateRecord(selectedID,
                        editText.getText().toString(),
                        editText2.getText().toString(),
                        editText3.getText().toString())) {
                } else {
                    toast = "Not Updated.";
                }
                Toast.makeText(context,toast,Toast.LENGTH_LONG).show();
                finish(); //<<<< ends/closes this activity and returns to calling activity
            }
        });
    }

    private void populateDisplay(long id) {
        Cursor csr = dbAdapter.getRecordById(id);
        if (csr.moveToFirst()) {
            editText.setText(csr.getString(csr.getColumnIndex(DBAdapter.KEY_NAME)));
            editText2.setText(csr.getString(csr.getColumnIndex(DBAdapter.KEY_AMOUNT)));
            editText3.setText(csr.getString(csr.getColumnIndex(DBAdapter.KEY_DUEDATE)));
        }
        csr.close();
    }
}
  • 基本上除了public class DBAdapter { public static final String KEY_ROWID = "id"; public static final String KEY_NAME = "name"; public static final String KEY_AMOUNT = "amount"; public static final String KEY_DUEDATE = "duedate"; private static final String TAG = "DBAdapter"; private static final String DATABASE_NAME = "billsdb"; private static final String DATABASE_TABLE = "bills"; private static final int DATABASE_VERSION = 2; // Replaces DATABASE_CREATE using the one source definition private static final String TABLE_CREATE = "CREATE TABLE IF NOT EXISTS " + DATABASE_TABLE + "(" + KEY_ROWID + " INTEGER PRIMARY KEY, " + // AUTOINCREMENT NOT REQD KEY_NAME + " DATE NOT NULL, " + KEY_AMOUNT + " VARCHAR ," + KEY_DUEDATE + " DATE " + ")"; private Context context; private DatabaseHelper DBHelper; private SQLiteDatabase db; public DBAdapter(Context ctx) { this.context = ctx; DBHelper = new DatabaseHelper(context); } private static class DatabaseHelper extends SQLiteOpenHelper { DatabaseHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL(TABLE_CREATE); // NO need to encapsulate in try clause } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { Log.w(TAG, "Upgrading database from version " + oldVersion + " to " + newVersion + ", which will destroy all old data"); db.execSQL("DROP TABLE IF EXISTS contacts"); //???????? db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE); onCreate(db); } } //---opens the database--- NOT NEEDED public DBAdapter open() throws SQLException { db = DBHelper.getWritableDatabase(); return this; } //---closes the database--- NOT NEEDED public void close() { DBHelper.close(); } //---insert a record into the database--- public long insertRecord(String name, String amount, String duedate) { ContentValues initialValues = new ContentValues(); initialValues.put(KEY_NAME, name); initialValues.put(KEY_AMOUNT, amount); initialValues.put(KEY_DUEDATE, duedate); return DBHelper.getWritableDatabase().insert(DATABASE_TABLE, null, initialValues ); } //---deletes a particular record--- public boolean deleteContact(long rowId) { return db.delete(DATABASE_TABLE, KEY_ROWID + "=" + rowId, null) > 0; } //---retrieves all the records--- SEE FOLLOWING METHOD public Cursor getAllRecords() {SQLiteDatabase db = DBHelper.getWritableDatabase(); String query ="SELECT * FROM " + DATABASE_TABLE; Cursor data = db.rawQuery(query,null); return data; } //As per getAllRecords but using query convenience method public Cursor getAllAsCursor() { return DBHelper.getWritableDatabase().query( DATABASE_TABLE, null,null,null,null,null,null ); } public Cursor getItemID(String name) { SQLiteDatabase db = DBHelper.getWritableDatabase(); String query = "SELECT " + KEY_ROWID + " FROM " + DATABASE_TABLE + " WHERE " + KEY_NAME + " = '" + name + "'"; Cursor data = db.rawQuery(query, null); return data; } // Retrieve a row (single) according to id public Cursor getRecordById(long id) { return DBHelper.getWritableDatabase().query( DATABASE_TABLE, null, KEY_ROWID + "=?", new String[]{String.valueOf(id)}, null,null,null ); } //---updates a record--- public boolean updateRecord(long rowId, String name, String amount, String duedate) { ContentValues args = new ContentValues(); args.put(KEY_NAME, name); args.put(KEY_AMOUNT, amount); args.put(KEY_DUEDATE, duedate); String whereclause = KEY_ROWID + "=?"; String[] whereargs = new String[]{String.valueOf(rowId)}; return DBHelper.getWritableDatabase().update(DATABASE_TABLE, args, whereclause, whereargs ) > 0; } } 已被取消评论之外,原来的答案也是如此。

结果

第一次运行 - MainActivity(票据): -

enter image description here

长按Bill2(注释因Click Click Long Click而不太容易被意外使用)

enter image description here

更改数据(未单击“更新”按钮)

enter image description here

单击

更新按钮(Toast已更新。)

enter image description here

  • 请注意使用 upDateRecord 返回调用活动,然后使用finish()根据更新后的数据刷新列表(可能是您的下一个)问题)
    • 使用onResume只会导致问题。
  • 注意值是日期和课程,而不是金额和期限,因为我没有更改startActivity方法中的值(轻松完成)。
    • 实际数据本身与流程无关。