Autore Topic: Image Slider con ViewPager  (Letto 468 volte)

Offline scemodicecosa

  • Nuovo arrivato
  • *
  • Post: 22
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus 4
Image Slider con ViewPager
« il: 22 Febbraio 2015, 17:31:57 CET »
0
Ciao a tutti, sto cercando di implementare nella mia applicazione una viewpager in modo tale che possa scorrere delle immagini con lo swipe. Ho cercato molto su internet trovando tanti codici ma tutti quanti prendono le immagini dalla cartella drawable. Io invece ho un database con i path delle immagini all'interno quindi ho cercato di modificare un po' il codice, con scarsi risultati. In particolare mi da questo errore:
Codice (Java): [Seleziona]
02-22 17:17:23.424: E/AndroidRuntime(6954): FATAL EXCEPTION: main
02-22 17:17:23.424: E/AndroidRuntime(6954): Process: info.androidhive.tabsswipe, PID: 6954
02-22 17:17:23.424: E/AndroidRuntime(6954): java.lang.RuntimeException: Unable to start activity ComponentInfo{info.androidhive.tabsswipe/info.androidhive.tabsswipe.ViewActivityW}: java.lang.NullPointerException: Attempt to get length of null array
02-22 17:17:23.424: E/AndroidRuntime(6954):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298)
02-22 17:17:23.424: E/AndroidRuntime(6954):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
02-22 17:17:23.424: E/AndroidRuntime(6954):     at android.app.ActivityThread.access$800(ActivityThread.java:144)
02-22 17:17:23.424: E/AndroidRuntime(6954):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
Questo invece è il mio codice
Codice (Java): [Seleziona]
public class ViewActivityW extends Activity {
        RegistrationAdapterW regadapter;
        ViewPager viewPager;
        RegistrationOpenHelperW openHelper;
        public long rowID;
        Cursor c;
        public TextView name;
        private TextView coff;
        private TextView desc;
        public EditText viewimg1, viewimg2;
        TouchImageView img1;
        public String[] imageId;
        public void onCreate(Bundle savedInstanceState) {
                  super.onCreate(savedInstanceState);
                  setContentView(R.layout.view_w);
                  name = (TextView) findViewById(R.id.et_viewfnamew);
                  coff = (TextView) findViewById(R.id.et_viewdescw);
                  desc = (TextView) findViewById(R.id.et_viewlnamew);
                  Bundle extras = getIntent().getExtras();
                  rowID = extras.getLong(WeedFragment.ROW_ID);
                  viewPager = (ViewPager) findViewById(R.id.viewPager);
              PagerAdapter adapter = new CustomAdapter(ViewActivityW.this);
              viewPager.setAdapter(adapter);
                 
        }
       
        @Override
        protected void onResume() {
                super.onResume();
 
                // Execute LoadNotes() AsyncTask
                new LoadNotes().execute(rowID);
        }
        private class LoadNotes extends AsyncTask<Long, Object, Cursor> {
                // Calls DatabaseConnector.java class
                RegistrationAdapterW dbConnector = new RegistrationAdapterW(ViewActivityW.this);
 
                @Override
                protected Cursor doInBackground(Long... params) {
                        // Pass the Row ID into GetOneNote function in
                        // DatabaseConnector.java class
                        dbConnector.opnToWrite();
                        return dbConnector.GetOneNote(params[0]);
                }
 
                @Override
                protected void onPostExecute(Cursor c) {
                        super.onPostExecute(c);
 
                        c.moveToFirst();
 
                        // Set the Text in TextView
                        name.setText(c.getString(1));
                        coff.setText(c.getString(2));
                        desc.setText(c.getString(3));imageId = new String[] {c.getString(5), c.getString(6)};
 
                        c.close();
                        dbConnector.Close();
                }
        }
e questo il custom adapter per popolare la viewpager:
Codice (Java): [Seleziona]
public class CustomAdapter extends PagerAdapter{
           
                   Context context;
                   ViewActivityW view;
                   public CustomAdapter(Context context){
                       this.context = context;
                       
                   }
                   
                   
                   @Override
                   public Object instantiateItem(ViewGroup container, int position) {
                       // TODO Auto-generated method stub
                       
                       LayoutInflater inflater = ((Activity)context).getLayoutInflater();
                       
                       View viewItem = inflater.inflate(R.layout.image_item, container, false);
                       ImageView imageView = (ImageView) viewItem.findViewById(R.id.imageView);
                       imageView.setImageBitmap(BitmapFactory.decodeFile(view.imageId[position]));
                       //TextView textView1 = (TextView) viewItem.findViewById(R.id.textView1);
                       //textView1.setText("hi");
                       ((ViewPager)container).addView(viewItem);
                       
                       return viewItem;
                   }

                   @Override
                   public int getCount() {
                       // TODO Auto-generated method stub
                       return imageId.length;
                   }

                   @Override
                   public boolean isViewFromObject(View view, Object object) {
                       // TODO Auto-generated method stub
                       
                       return view == ((View)object);
                   }


                   @Override
                   public void destroyItem(ViewGroup container, int position, Object object) {
                       // TODO Auto-generated method stub
                       ((ViewPager) container).removeView((View) object);
                   }

                }
So che il codice è sbagliato ma non capisco come estrarre i path che mi servono da inserire per il custom adapter. Potete consigliarmi qualcosa?
Grazie

Offline scemodicecosa

  • Nuovo arrivato
  • *
  • Post: 22
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus 4
Re:Image Slider con ViewPager
« Risposta #1 il: 23 Febbraio 2015, 17:45:12 CET »
0
UP!!

Offline tonno16

  • Utente storico
  • *****
  • Post: 1197
  • Respect: +58
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:Image Slider con ViewPager
« Risposta #2 il: 23 Febbraio 2015, 20:04:44 CET »
0
Se non sbaglio quando usi il oager dovresti distanziare un fragment per ogni scheda.
Quindi qui ti basta settare come background l'immagine al layout.
Perché in teoria se sono solo foto hai sempre lo stesso layout.

Ma dove tieni ste foto? Da SD? Da drawable? Dalla rete?

Offline scemodicecosa

  • Nuovo arrivato
  • *
  • Post: 22
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus 4
Re:Image Slider con ViewPager
« Risposta #3 il: 23 Febbraio 2015, 21:33:52 CET »
0
Se non sbaglio quando usi il oager dovresti distanziare un fragment per ogni scheda.
Quindi qui ti basta settare come background l'immagine al layout.
Perché in teoria se sono solo foto hai sempre lo stesso layout.

Ma dove tieni ste foto? Da SD? Da drawable? Dalla rete?
Le immagini sono sulla scheda SD e in un database sono inseriti i loro path in modo tale da richiamare le immagini da li(ho salvato i path nel database perché è una lista dinamica alla quale ogni volta aggiungo una nuova riga con relativa immagine). Il problema è quando creo l'array imageId che non so perché non riesco ad utilizzare nella classe del custom adapter, quando lo richiamo con vieww.imageid chiama un array vuoto e non quello con inseriti i valori del database. Qualcuno sa spiegarmi perché non riesco a chiamare l'array con i path dentro?

Offline scemodicecosa

  • Nuovo arrivato
  • *
  • Post: 22
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus 4
Re:Image Slider con ViewPager
« Risposta #4 il: 26 Febbraio 2015, 18:01:06 CET »
0
Up