如何从列表视图重新加载活动以更新数据库的信息?

时间:2016-10-15 21:10:53

标签: android database listview return reload

我正在尝试实现这样的事情:

example

我有一个带有布局的主类,从中我从数据库中获取一些数据并将其绘制成图像中显示的(使用另一个布局complex_list):

public class main_class extends Activity{
DatabaseHelper myDB;
ListView list;
protected void onCreate(Bundle savedInstanceState){

super.onCreate(savedInstanceState);
setContentView(R.layout.main_layout);
myDB=new DatabaseHelper(this);
list = (ListView) findViewById(R.id.list);
Cursor res = myDB.getAllData();
    if (res.getCount()==0){
        Toast.makeText(this,R.string.nothing_found,Toast.LENGTH_LONG).show();
    }
else{
...
list.setAdapter(new listAdapter(..., this.getBaseContext()));
}

我有一个实现BaseAdapter的类:

class listAdapter extends BaseAdapter {
public View getView(final int position, View convertView, final ViewGroup parent) {

    inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE );
    View row;
    row = inflater.inflate(R.layout.complex_list, parent, false);
    ...
Delete = (Button) row.findViewById(R.id.delete_entry_list);
...
    Delete.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            deleteEntry(id[position]);
            Intent refresh = new Intent(context, main_class.class);
            refresh.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); //I've added this line because otherwise I get an error an the app crashes.
            context.startActivity(refresh);
            //((Activity)context).finish();
        }
    });
    return (row);
}
public void deleteEntry (  int id){
    DatabaseHelper myDB = new DatabaseHelper(context);
    myDB.deleteData(Integer.toString(id));
}

我想要做的是在按下删除按钮后刷新整个活动以查看数据库的更新版本。

我写的内容确实有效,但是当我按下手机中的返回按钮时,它会返回到数据库的旧图像,而不是转到我访问此活动的菜单。

我一直在研究类似的问题,我发现的唯一解决方案是添加被评论的行:

//((Activity)context).finish();

但它使我的应用程序因此错误而崩溃:

java.lang.ClassCastException: android.app.ContextImpl cannot be cast to android.app.Activity

有人能给我一些我做错的提示或是否有更简单的方法?

1 个答案:

答案 0 :(得分:1)

ClassCastException: android.app.ContextImpl cannot be cast to android.app.Activity

可能从

开始
list.setAdapter(new listAdapter(..., this.getBaseContext()));

您应该使用this代替this.getBaseContext()作为Activity extends Context