Java 刷新android活动并在同一活动中显示更新的详细信息

Java 刷新android活动并在同一活动中显示更新的详细信息,java,android,sqlite,Java,Android,Sqlite,我更新了sqlite数据库中的表, 但我不知道如何获得最新的细节 在相同的活动中,按update a Button时刷新 我试过下面的代码 finish(); startActivity(getintent()); 它再次加载相同的活动,但没有显示任何内容 我知道这不是正确的方法,我需要你的帮助 提前谢谢 这是我的密码 package com.example.eightyeight.monthmaths; import android.database.Cursor; import

我更新了sqlite数据库中的表, 但我不知道如何获得最新的细节 在相同的活动中,按update a Button时刷新

我试过下面的代码

  finish();
  startActivity(getintent());
它再次加载相同的活动,但没有显示任何内容

我知道这不是正确的方法,我需要你的帮助

提前谢谢

这是我的密码

package com.example.eightyeight.monthmaths;

import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.support.design.widget.FloatingActionButton;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.Editable;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TableLayout;
import android.widget.TableRow;
import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;


public class secondactivity extends AppCompatActivity {
String selected = "", yy = "", mm = "";
FloatingActionButton search;
Spinner sid;
List<String> li;

TableLayout tbid;


EditText year;
Cursor cur;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.secondactivity);
    sid = (Spinner) findViewById(R.id.monthspinid);
    year = (EditText) findViewById(R.id.yearid);

    search = (FloatingActionButton) findViewById(R.id.goid);

    tbid = (TableLayout) findViewById(R.id.tbid);


    li = new ArrayList<String>();
    li.add("Month...");
    li.add("Jan");
    li.add("Feb");
    li.add("Mar");
    li.add("Apr");
    li.add("May");
    li.add("Jun");
    li.add("Jul");
    li.add("Aug");
    li.add("Sep");
    li.add("Oct");
    li.add("Nov");
    li.add("Dec");


    ArrayAdapter<String> ad;
    ad = new ArrayAdapter<String>(secondactivity.this, android.R.layout.simple_spinner_item, li);
    ad.setDropDownViewResource(android.R.layout.simple_spinner_item);
    sid.setAdapter(ad);

    sid.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

            selected = (String) sid.getSelectedItem();
            Toast.makeText(getApplicationContext(), selected, Toast.LENGTH_SHORT).show();


        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {

        }
    });
    search.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            yy = year.getText().toString();
            mm = (String) sid.getSelectedItem();

            SQLiteDatabase db;
            db = openOrCreateDatabase("monthapp", MODE_PRIVATE, null);
            cur = db.rawQuery("SELECT * FROM monthvaluesOrgin WHERE curmonth='" + mm + "' AND curyear='" + yy + "'", null);
            while (cur.moveToNext()) {


                TableRow tr = new TableRow(secondactivity.this);
                TextView tv1 = new TextView(secondactivity.this);
                tv1.setWidth(100);
                tv1.setText(cur.getString(1));
                tr.addView(tv1);


                final TextView tv2 = new TextView(secondactivity.this);
                tv2.setText(cur.getString(2));
                tv2.setWidth(100);
                tr.addView(tv2);


                final EditText et = new EditText(secondactivity.this);
                tr.addView(et);

                final TextView t21 = new TextView(secondactivity.this);
                t21.setText(cur.getString(0));

                tr.addView(t21);


                final TextView tv3 = new TextView(secondactivity.this);
                tv3.setText(cur.getString(3));
                tv3.setWidth(100);
                tr.addView(tv3);


                Button b = new Button(secondactivity.this);
                b.setText("update");
                tr.addView(b);

                tbid.addView(tr);
                b.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {

                        String a = (String) tv2.getText();
                        String totl = (String) tv3.getText();
                        int totv = Integer.parseInt(totl);

                        int b = Integer.parseInt(a);
                        Editable edi = et.getText();
                        int c = Integer.parseInt(String.valueOf(edi));

                        String id = (String) t21.getText();

                        int add = b + c;


                        if (add >= totv) {
                            Toast.makeText(getApplicationContext(), "large", Toast.LENGTH_SHORT).show();

                        } else {


                            SQLiteDatabase dbup;

                            dbup = openOrCreateDatabase("monthapp", MODE_PRIVATE, null);
                            dbup.execSQL("UPDATE monthvaluesOrgin SET currentpaid='" + add + "' WHERE id='" + id + "'");
                            Toast.makeText(getApplicationContext(), "added" + add + "\n" + id, Toast.LENGTH_LONG).show();
                            finish();
                            startActivity(getIntent());


                        }


                        // Toast.makeText(getApplicationContext(),"add="+add,Toast.LENGTH_SHORT).show();


                    }
                });


            }


        }
    });


}
package com.example.eightyeight.monthmaths;
导入android.database.Cursor;
导入android.database.sqlite.SQLiteDatabase;
导入android.support.design.widget.FloatingActionButton;
导入android.support.v7.app.AppActivity;
导入android.os.Bundle;
导入android.text.Editable;
导入android.view.view;
导入android.widget.AdapterView;
导入android.widget.ArrayAdapter;
导入android.widget.Button;
导入android.widget.EditText;
导入android.widget.Spinner;
导入android.widget.TableLayout;
导入android.widget.TableRow;
导入android.widget.TextView;
导入android.widget.Toast;
导入java.util.ArrayList;
导入java.util.List;
公共类secondactivity扩展了AppCompatActivity{
所选字符串=”,yy=”,mm=”;
浮动操作按钮搜索;
微调器sid;
李名单;
表布局tbid;
编辑年度;
光标电流;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.secondactivity);
sid=(微调器)findViewById(R.id.monthpinId);
年份=(编辑文本)findViewById(R.id.yearid);
search=(FloatingActionButton)findViewById(R.id.goid);
tbid=(TableLayout)findViewById(R.id.tbid);
li=新的ArrayList();
加上(“月份…”);
li.添加(“一月”);
li.添加(“二月”);
li.添加(“Mar”);
li.添加(“Apr”);
li.添加(“可能”);
li.添加(“Jun”);
li.添加(“七月”);
li.添加(“八月”);
li.添加(“Sep”);
li.添加(“十月”);
li.添加(“11”);
li.添加(“Dec”);
ArrayAdapter广告;
ad=新的ArrayAdapter(secondactivity.this,android.R.layout.simple\u spinner\u item,li);
ad.setDropDownViewResource(android.R.layout.simple\u微调器\u项);
sid.setAdapter(ad);
sid.setOnItemSelectedListener(新的AdapterView.OnItemSelectedListener(){
@凌驾
已选择公共视图(AdapterView父视图、视图视图、整型位置、长id){
selected=(字符串)sid.getSelectedItem();
Toast.makeText(getApplicationContext(),选中,Toast.LENGTH_SHORT.show();
}
@凌驾
未选择公共无效(AdapterView父级){
}
});
search.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
yy=year.getText().toString();
mm=(字符串)sid.getSelectedItem();
sqlitedb数据库;
db=openOrCreateDatabase(“monthapp”,模式_PRIVATE,空);
cur=db.rawQuery(“从monthvaluesOrgin中选择*,其中curmonth='“+mm+”,curyear='“+yy+””,null);
while(cur.moveToNext()){
TableRow tr=新的TableRow(secondactivity.this);
TextView tv1=新的TextView(secondactivity.this);
tv1.设定宽度(100);
tv1.setText(cur.getString(1));
tr.addView(tv1);
最终文本视图tv2=新文本视图(secondactivity.this);
tv2.setText(cur.getString(2));
tv2.setWidth(100);
tr.addView(tv2);
最终编辑文本et=新编辑文本(secondactivity.this);
tr.addView(et);
最终文本视图t21=新文本视图(secondactivity.this);
t21.setText(cur.getString(0));
tr.addView(t21);
最终文本视图tv3=新文本视图(secondactivity.this);
tv3.setText(cur.getString(3));
tv3.setWidth(100);
tr.addView(tv3);
按钮b=新按钮(secondactivity.this);
b、 setText(“更新”);
tr.addView(b);
tbid.addView(tr);
b、 setOnClickListener(新视图。OnClickListener(){
@凌驾
公共void onClick(视图v){
字符串a=(字符串)tv2.getText();
String totl=(String)tv3.getText();
int-totv=Integer.parseInt(totl);
int b=整数.parseInt(a);
可编辑edi=et.getText();
int c=Integer.parseInt(String.valueOf(edi));
字符串id=(字符串)t21.getText();
int add=b+c;
如果(添加>=totv){
Toast.makeText(getApplicationContext(),“large”,Toast.LENGTH_SHORT).show();
}否则{
sqlitedbup数据库;
dbup=openOrCreateDatabase(“monthapp”,MODE_PRIVATE,null);
execSQL(“UPDATE monthvaluesOrgin SET currentpayed=”“+add+”,其中id=”“+id+””);
Toast.makeText(getApplicationContext(),“added”+add+“\n”+id,Toast.LENGTH_LONG).show();
完成();
startActivity(getIntent());
}
//Toast.makeText(getApplicationContext(),“add=“+add,Toast.LENGTH_SHORT).show();
}
});
}
}
});
}

}

你为什么一次又一次地呼叫startActivity

好方法

使用

通知附加的观察者基础数据已被删除 已更改,任何反映数据集的视图都应刷新自身

代码

 dbup = openOrCreateDatabase("monthapp", MODE_PRIVATE, null);
                        dbup.execSQL("UPDATE monthvaluesOrgin SET currentpaid='" + add + "' WHERE id='" + id + "'");
                        Toast.makeText(getApplicationContext(), "added" + add + "\n" + id, Toast.LENGTH_LONG).show();
                         ad.notifyDataSetChanged(); // This

创建方法来更新适配器中的列表,并在更新DB后调用它

 public void refresh(Cursor newCursor) {
   if (mCursor != null) mCursor.close();
        mCursor = newCursor;
      if (newCursor != null) 
        this.notifyDataSetChanged();
       }
无论何时
 public void refresh(Cursor newCursor) {
   if (mCursor != null) mCursor.close();
        mCursor = newCursor;
      if (newCursor != null) 
        this.notifyDataSetChanged();
       }