android fragment listview,android – 如何从FragmentActivity更新ListFragment中的ListView?

我正在使用FragmentActivity中的ListFragment与SimpleCursorAdapter和修改的CursorLoader.修改的CursorLoader只是发出rawQueries – 没有其他更改.

在FragmentActivity中的某个时刻,我需要重新获取ListFragment中的ListView的数据/游标.

我怎样才能做到这一点?

提前谢谢了.

这是FragmentActivity调用ListFragment中的一个方法:

public class ActivityList extends FragmentActivity {

@Override

protected void onActivityResult(final int requestCode,final int resultCode,final Intent intent) {

...

processUpdateList();

}

...

private void processUpdateList() {

Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.fragmentlist);

if (fragment != null) {

((FragmentList) fragment).requeryList();

}

}

}

这里是ListFragment,该方法应该启动ListView的重新查询,重新加载或重新绘制. ListView.invalidate()没有帮助 – 它没有更改显示的数据.

public class FragmentList extends ListFragment implements LoaderManager.LoaderCallbacks {

private SimpleCursorAdapter adapter;

private Context context;

private ListView listView;

public void requeryList() {

// listView.invalidate(); didn't re-query

// TODO: How???

}

@Override

public void onActivityCreated(final Bundle bundle) {

super.onActivityCreated(bundle);

context = getActivity().getApplicationContext();

listView = getListView();

getActivity().getSupportLoaderManager().initLoader(MyConstants.LDR_TABLE1LIST,null,this);

adapter = new SimpleCursorAdapter(context,R.layout.fragmentlist_row,new String[] { Table1.DESCRIPTION },new int[] { R.id.fragmentlist_row_description },CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);

setListAdapter(adapter);

setListShown(false);

listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);

}

@Override

public Loader onCreateLoader(final int id,final Bundle bundle) {

MyCursorLoader loader = null;

switch (id) {

case MyConstants.LDR_TABLE1LIST:

loader = new MyCursorLoader(context,MysqLiteOpenHelper.TABLE1_FETCH,null);

break;

}

return loader;

}

@Override

public void onLoaderReset(final Loader loader) {

adapter.swapCursor(null);

}

@Override

public void onLoadFinished(final Loader loader,final Cursor cursor) {

adapter.swapCursor(cursor);

setListShown(true);

}

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值