Android-如何在通过dialogfragment将项目添加到数据库后刷新我的listview
我有一个DialogFragment,从中我将项目添加到数据库表中 我还有另一个片段,它有一个列表视图,我在其中显示数据库中的所有项目。Android-如何在通过dialogfragment将项目添加到数据库后刷新我的listview,android,sql,database,Android,Sql,Database,我有一个DialogFragment,从中我将项目添加到数据库表中 我还有另一个片段,它有一个列表视图,我在其中显示数据库中的所有项目。 我可以将项目添加到数据库中,但它不会立即出现在从数据库获取项目的ListView上。为MyListAdapter创建一个全局变量 在存在的片段中创建一个getter: public MyListAdapter getAdapter() { return adapter; } 在数据库中创建新条目时,请调用: //Make sure you make
我可以将项目添加到数据库中,但它不会立即出现在从数据库获取项目的ListView上。为MyListAdapter创建一个全局变量 在存在的片段中创建一个getter:
public MyListAdapter getAdapter() {
return adapter;
}
在数据库中创建新条目时,请调用:
//Make sure you make a tag when you add your fragment
MyFrag f = (MyFrag) getActivity().getSupportFragmentManager()
.findFragmentByTag(YOURTAGHERE);
f.getAdapter().notifyDataSetChanged();
这应该是可行的,但是您需要自己做一些调试/逻辑来完成它
编辑:方法如下:
public void updateList() {
List<MyItem> l = db.getAllMyItem();
for(MyItem cn :l )
{
cn = l.get(0);
l.remove(0);
my.add(new MyList(cn.getName(),0));
}
}
为MyListAdapter创建全局变量 在存在的片段中创建一个getter:
public MyListAdapter getAdapter() {
return adapter;
}
在数据库中创建新条目时,请调用:
//Make sure you make a tag when you add your fragment
MyFrag f = (MyFrag) getActivity().getSupportFragmentManager()
.findFragmentByTag(YOURTAGHERE);
f.getAdapter().notifyDataSetChanged();
这应该是可行的,但是您需要自己做一些调试/逻辑来完成它
编辑:方法如下:
public void updateList() {
List<MyItem> l = db.getAllMyItem();
for(MyItem cn :l )
{
cn = l.get(0);
l.remove(0);
my.add(new MyList(cn.getName(),0));
}
}
您可以使用yourListAdapter.notifyDataSetChanged方法,请参阅
编辑:
您从片段A将该项添加到数据库中,因此您应该在片段B中为listAdapter创建一个全局变量(包含listView的变量),并在片段A中通过标记获取片段,然后您应该调用:
//when you add the fragmentB to your Activity , make sure you set a Tag for it
FragmentB f = (FragmentB) getActivity().getSupportFragmentManager()
.findFragmentByTag(TAG_FRAGMENT_B);
f.getMyListAdapter().notifyDataSetChanged();
编辑2:
在CustomListAdapter中,添加一个方法来刷新我的对象列表:
然后,将新对象添加到数据库时,从数据库检索所有数据,然后调用:
f.getMyListAdapter().setMyList(newListOfObjects);//newListOFObjects contains the new data
您可以使用yourListAdapter.notifyDataSetChanged方法,请参阅
编辑:
您从片段A将该项添加到数据库中,因此您应该在片段B中为listAdapter创建一个全局变量(包含listView的变量),并在片段A中通过标记获取片段,然后您应该调用:
//when you add the fragmentB to your Activity , make sure you set a Tag for it
FragmentB f = (FragmentB) getActivity().getSupportFragmentManager()
.findFragmentByTag(TAG_FRAGMENT_B);
f.getMyListAdapter().notifyDataSetChanged();
编辑2:
在CustomListAdapter中,添加一个方法来刷新我的对象列表:
然后,将新对象添加到数据库时,从数据库检索所有数据,然后调用:
f.getMyListAdapter().setMyList(newListOfObjects);//newListOFObjects contains the new data
从自定义适配器类创建全局对象
MyListAdapter mAdapter = new MyListAdapter(getActivity(), my);
并设置listView的适配器:
mListView.setAdapter(mAdapter);
只需在适配器中刷新名为my的数组。
然后打电话:
mAdapter.notifyDataSetChanged();
它将完成以下任务…从自定义适配器类创建一个全局对象
MyListAdapter mAdapter = new MyListAdapter(getActivity(), my);
并设置listView的适配器:
mListView.setAdapter(mAdapter);
只需在适配器中刷新名为my的数组。
然后打电话:
mAdapter.notifyDataSetChanged();
它会起作用的…您必须再次将适配器设置为listView,这将引发更新
yourAdapter.notifyDataSetChanged();
listView.setAdapter(yourAdapter);
您必须再次将适配器设置为listView,这将引发更新
yourAdapter.notifyDataSetChanged();
listView.setAdapter(yourAdapter);
你能给我们看一下你的MyListAdapter吗?你能给我们看一下你的MyListAdapter吗?我试过使用它,但是它给出了一个错误,notifydatasetchanged是未定义的。在onclickit之后,我尝试在dialogfragment类中使用它,它是未定义的,因为您在一个不是ListAdPath的实例上调用了它?您使用哪个sdk版本???我用satriano的更新了代码,这与您的类似,但我的列表仍然没有刷新。我是否在正确的位置使用了notifydatasetchanged?应该在add:之后调用notifydatasetchanged,因此请刷新您称之为my的列表,然后调用notifydatasetchanged方法,但没有发生任何事情。如何在调用noifydatasetchanged之前刷新列表我已经尝试过使用它,但它给出了一个错误,notifydatasetchanged未定义。在onclickit之后,我尝试在dialogfragment类中使用它,它是未定义的,因为您在一个不是ListAdPath的实例上调用了它?您使用哪个sdk版本???我用satriano的更新了代码,这与您的类似,但我的列表仍然没有刷新。我是否在正确的位置使用了notifydatasetchanged?应该在add:之后调用notifydatasetchanged,因此请刷新您称之为my的列表,然后调用notifydatasetchanged方法,但没有发生任何事情。在适配器中调用noifydatasetchanged refresh array之前如何刷新列表,我不理解这一部分?你能再解释一下吗?你的列表视图只显示你的数组中你发送给你的arrayAdapter的项目,这是我在你的情况下。。。您只需要删除我的数组中的项并添加新项,或者只添加一项。。。你要什么都行。然后调用notifyDataSetChanged,这样您的arrayAdapter就会知道列表项已更改…刷新适配器中的数组,我不明白那个部分?你能再解释一下吗?你的列表视图只显示你的数组中你发送给你的arrayAdapter的项目,这是我在你的情况下。。。您只需要删除我的数组中的项并添加新项,或者只添加一项。。。你要什么都行。然后调用notifyDataSetChanged,这样您的arrayAdapter就会知道列表项已更改…我用它更新了代码,但仍然没有出现错误
ors,但它不会立即刷新我的列表,不会发生任何事情。再次查看代码后,需要使用数据库更新我的列表。创建一个执行此操作的公共方法,并将其与notifyDataSetChangedi一起调用。我用此方法更新了代码,但仍然没有出现错误,但它没有立即刷新我的列表,什么都没有发生。再次查看代码后,您需要使用数据库更新我的列表。创建一个执行此操作的公共方法,并将其与notifyDataSetChanged一起调用