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