Autore Topic: Aggiornare ListView in Fragment!  (Letto 934 volte)

Offline Marcox

  • Utente junior
  • **
  • Post: 56
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC wildfire
  • Sistema operativo:
    Windows XP
Aggiornare ListView in Fragment!
« il: 17 Luglio 2013, 22:42:49 CEST »
0
Salve ragazzi,
ho un viewpager cun un adapter che estende FragmentStatePagerAdapter, il tutto serve per mostrare dei fragment che ripetono sempre lo stesso layout per ogni pagina nel quale è presente una listView... adesso il problema è, come faccio ad aggiornare la listView nella pagina visibile premendo su un pulsante al di fuori del Fragment? riesco ad aggiornare solo le pagine non visibili , ma non quella visualizzata e quelle adiacenti...
Una possibile soluzione potrebbe essere reimpostare l adapter, ma ovviamente non mi sembra la scelta più corretta anche perchè come soluzione è piuttosto lenta... sapreste aiutarmi?

ecco il codice, l ho semplificato un po...

Codice (Java): [Seleziona]
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:
                       
                        //qui vorrei chiamare il metedo caricaLista() del 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;
    }
       
                public  void caricaLista(String meno){
                lista.clear();
                lista.add(new Home("", "", "add", "",""));
                dbHelper.open();
                String DataDaCaricare =               day_date2.format(currentCal.getTime())+"/"+day_month.format(currentCal.getTime())+"/"+day_year.format(currentCal.getTime());
                cursor=dbHelper.cercaStringaHome(DataDaCaricare);
                if(cursor.getCount()!=0){
                        cursor.moveToFirst();
                        for(int i=0;i<cursor.getCount();i+=1){
                                String materia=cursor.getString(1);
                                String testo=cursor.getString(2);
                                String selected=cursor.getString(3);
                                lista.add(new Home(materia, testo, selected, meno,DataDaCaricare));
                                cursor.moveToNext();
                        }
                       
                }
                dbHelper.close();
                homeworkListAdapter.notifyDataSetChanged();
               
        }      
« Ultima modifica: 18 Luglio 2013, 16:09:32 CEST da Marcox »

Offline tonno16

  • Utente storico
  • *****
  • Post: 1232
  • Respect: +60
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:Aggiornare ListView in Fragment!
« Risposta #1 il: 27 Agosto 2014, 13:45:55 CEST »
0
Come hai risolto? So che è vecchio il thread