0
我有一个viewpager与扩展FragmentStatePagerAdapter的适配器,这必须显示一些片段,总是重复相同的布局(其中有一个listView)每个页面...现在的问题是如何通过单击片段外部的按钮来更新当前可见的listView?我只能刷新不可见页面中的那些,但不能显示那些显示或相邻的页面... 一种可能的解决方案是重置适配器,但它似乎并不正确,因为它'很慢...你能帮我吗?通过点击它的外部刷新列表查看
public class MainActivity extends FragmentActivity implements OnClickListener{
@Override
protected void onCreate(Bundle arg0) {
// TODO Auto-generated method stub
super.onCreate(arg0);
setContentView(R.layout.layout1);
pagerAdapter = new AdapterPager(getSupportFragmentManager());
ctx=this;
mViewPager = (ViewPager) findViewById(R.id.pager);
mViewPager.setAdapter(pagerAdapter);
pagerTab=(PagerTabStrip) findViewById(R.id.pager_tab_strip);
mViewPager.setCurrentItem(paginaCentrale);
modifica=(ImageView)findViewById(R.id.modifica);
modifica.setOnClickListener(this);
}
@Override
public void onClick(View arg0) {
// TODO onClick
switch (arg0.getId()){
case R.id.modifica:
//here I would like to call the method caricaLista() of the fragment
break;
}
}
public static class AdapterPager extends FragmentStatePagerAdapter {
public AdapterPager(FragmentManager fm) {
super(fm);
}
@Override
public int getItemPosition(Object object) {
// TODO Auto-generated method stub
return super.getItemPosition(object);
}
@Override
public Fragment getItem(int i) {
Fragment fragment;
Bundle args = new Bundle();
args.putInt("position", i);
fragment=new Fragment1();
fragment.setArguments(args);
return fragment;
}
@Override
public int getCount() {
return 1000;}
@Override
public CharSequence getPageTitle(int i) {
String title=String.valueOf(i);
return title;
}
}
public static class Fragment1 extends Fragment implements OnItemClickListener{
int fragmentPosition;
ListView lv;
List<Lista> lista= new ArrayList<Lista>();
public Fragment1(){
}
public static Fragment1 newInstance(){
return new Fragment1();
}
@Override
public void onResume() {
// TODO Auto-generated method stub
super.onResume();
caricaLista("")}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle
savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment1, container, false);
lv=(ListView) rootView.findViewById(R.id.listViewCompiti);
Bundle args = getArguments();
int position= args.getInt("position");
fragmentPosition=position;
lv.setOnItemClickListener(this);
homeListAdapter= new HomeListAdapterWithCache(ctx,R.layout.list_item_home,lista);
lv.setAdapter(homeListAdapter);
return rootView;
}
真的很感谢你的回答......但是当我点击它似乎没有任何要更新它仍然是相同的:(我可以从看logCat表示该方法已被调用,但为什么该片段没有改变? – marcox1994
该方法做了什么?它的一个列表?我猜你必须调用适配器内部的notifyDataSetChanged你的函数caricaLista –
该方法本身的作用,实际上listView onStart填充正确...(我打电话给notifyDataSetChanged ...) – marcox1994