2012-07-21 67 views
1

我想在将记录插入到sqllite db后从另一个活动调用listview适配器。如何从另一个活动调用ListView适配器进行刷新 - notifyDataSetChanged()

我无法调用adapter.notifyDataSetChanged()方法。什么是最好的方式来做到这一点。

public void onClick(View v) { 
    TextView item_name; 
    item_name=(TextView) findViewById(R.id.eItemName);   
    Log.d("Insert: ", "Inserting .."); 
    db.add_item(new Item(item_name.getText().toString()), getApplicationContext()); 

    // I want to call the method HERE!!!! 

    finish(); 
} 
+0

如果没有该活动的实例,如何更改数据集?您可以手动启动活动,并在活动的onCreate中更新数据库中的列表项。\ – Li3ro 2012-07-21 11:32:56

回答

1

只是

finish()当前活动,请从onActivityResult()adapter.notifyDataSetChanged()在以前的活动(如我假设你的列表视图在此之前的活动)。

而且距上一次活动使用startActivityForResult();

开始你当前活动或如果你有这个活动列表适配器的参考,然后使用该引用调用adapter.notifyDataSetChanged()。 (但我认为它不是一个好的做法)

+0

尊敬的@ user370305我有两项活动,ItemsActivity和ItemsAddActivity,并且我开始了ItemsAddActivity这个代码: 'private void prepareListener() { \t \t listener_open_add_item =新OnClickListener(){\t \t \t \t \t \t公共无效的onClick(视图v){ \t \t \t \t意图意图=新意图(getBaseContext(),ItemsAddActivity.class); \t \t \t \t startActivity(intent); \t \t \t \t \t \t \t} \t \t};我想在startActivity(intent)之后尝试adapter.notifyDataSetChanged();我试过在startActivity(intent)后面使用adapter.notifyDataSetChanged()方法。线。但它没有奏效。 Cas行在AddItemActivity完成之前运行。因为我尝试在finish()之后运行代码。在那个方法。 – RedLEON 2012-07-21 11:48:00

+0

现在用ItemsActivity中的'startActivity(intent)'来代替'startActivityForResult(intent,0)'并且在onActivityResult()方法中添加''。在'onActivityResult()'方法写'adapter.notifyDataSetChanged();' – user370305 2012-07-21 11:50:48

+0

我添加了这段代码,但它似乎onActivityResult方法无法调用。我仍在尝试... – RedLEON 2012-07-21 12:18:30

1

更好的选择将重新加载您的ListView新的数据在您的活动的onResume()你有ListView。没有必要从另一个班级拨打notifyDataSetChanged(),因为您的另一个活动中没有显示您的列表。

@Override 
protected void onResume() { 
    super.onResume(); 

    //fill your Collection with new data 
    // setAdapter or notify your adapter 
} 
+0

thx您的建议。它工作正常。 但我想我调用该方法时重新加载ListView。 Cas notifyDataSetChanged不起作用。 – RedLEON 2012-07-22 10:19:14

+0

'notifyDataSetChanged()不工作?',它应该工作。 – 2012-07-23 04:02:33

+0

不幸的是不工作。 – RedLEON 2012-07-23 13:40:09

相关问题