介绍刷新列表
我使用一个数据库和ContentProvider的填充ListFragment。问题是,ListFragment是没有得到刷新删除商品后,我不得不关闭并重新打开该应用显示在列表中添加的项目。
我以前好这方面的工作,但我修改的代码做了之后,这已经开始发生,我不知道如何解决。
是什么原因导致这种
从我的主要活动描述,我通过打电话的意图ListFragment。由于片段不能通过intent直接调用,因此我调用FragmentActivity,该功能仅用于启动ListFragment。
[Main] >> [FragmentActivity] >> [ListFragment]
正如我要处理单或双窗格中,我创建了contais的片段的布局,这被称为list_layout
。
FragmentActivity:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.list_layout);
//...
if (mDualPane){
MyPlacesListFragment listFragment = new MyPlacesListFragment();
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.add(R.id.list_fragment, listFragment).commit();
}
else {
MyPlacesListFragment listFragment = new MyPlacesListFragment();
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.add(android.R.id.content, listFragment).commit();
}
}
list_layout.xml:(对于单窗格视图,对于双窗格将是相似的,但在水平方向和添加的FrameLayout容器)
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<fragment
class="com.final.reversegeocoding.MyPlacesListFragment"
android:id="@+id/list_fragment"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
的ListFragment使用ResourceCursorAdapter所以我用newVew和bindView方法。我只会把代码引用到如何夸大类的屁股,我已检查其他代码功能是否做得很好。不得不说,我夸大android.R.layout.simple_list_item_2
,因为这是我需要填写列表中的布局。
ListFragment:
final class PlacesCursorAdapter extends ResourceCursorAdapter {
private final LayoutInflater mInflater;
public PlacesCursorAdapter(Context context, Cursor c) {
super(context, android.R.layout.simple_list_item_2, c, 0);
//...
public View newView(Context context, Cursor cursor, ViewGroup parent) {
View view = mInflater.inflate(android.R.layout.simple_list_item_2, parent, false);
//...
结论
之前,我我以前不设置在FragmentActivity的setContentView(R.layout.list_layout);
,它这样做是正确的刷新时我删除了一个项目。
但由于我必须处理单个或双重窗格,我一直被迫做这个,现在,当我删除一个项目,列表刷新,但因为它包含在FragmentActivity的list_layout
,这不是刷新直到我退出并再次进入活动,该列表不会在其内部被刷新。
所以我的问题是:如何修改此代码以获取布局刷新而不必退出ListFragment?
你发布了很多不相关的代码,但没有发布什么重要的:ContentProvider和你如何删除一个项目 – pskink
@pskink正如我所说的,contentProvider的代码是O K.我之前就使用过它,并且它的功能正确。它已经开始做错了,因为我已经声明了'list_layout',所以对提供者的方法不存在问题,这是布局刷新的问题。 – masmic