2012-01-14 14 views
5

पर SimpleCursorAdapter एक ViewPager में दिखाने के लिए एक SimpleCursorAdapter का उपयोग करके ListView कैसे प्राप्त करूं? केवल पेजर ठीक काम करता है और ListView एक सूची एक्टिविटी में ठीक काम करता है, लेकिन मुझे नहीं पता कि यह गतिविधि में कैसे काम करता है (शायद यह समस्या है)।एक ViewPager

public class Player extends Activity { 
private ViewPager pager; 
private static int NUMERO_DE_TELAS = 3; 
private AdaptadorDeTelas adaptador; 

//Para debug apagar no final  
final String BABAS = "babas"; 

ContentResolver mContentResolver; 

ListView listView; 


@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    //Adaptador para criar o viewpager 
    adaptador = new AdaptadorDeTelas(); 
    pager = (ViewPager)findViewById(R.id.pageradapter); 
    pager.setAdapter(adaptador);   

    pager.setCurrentItem(1);  





} 
private class AdaptadorDeTelas extends PagerAdapter{ 

    @Override 
    public int getCount(){ 
     return NUMERO_DE_TELAS; 
    } 

    @Override 
    public Object instantiateItem(View collection, int position){   


     View layout; 
     LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

     if(position == 0){ 
     layout = inflater.inflate(R.layout.layout_zero, null); 
     }else if(position == 1){ 
      layout = inflater.inflate(R.layout.layout_um, null); 
     }else{ 


      Uri todasMusicas = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; 

      //Seleciona as tabelas a serem retornadas do content audio.media 
      String[] projection = {MediaStore.Audio.Media._ID, MediaStore.Audio.Media.TITLE 
      }; 

      //Pega todas as músicas no aparelho 
      String selection = MediaStore.Audio.Media.IS_MUSIC + " != 0"; 


      Cursor cursor; 

      cursor = Player.this.managedQuery(
       todasMusicas, 
       projection, 
       selection, 
       null, 
       MediaStore.Audio.Media.TITLE + " ASC"); 



     String[] from = new String []{MediaStore.Audio.Media.TITLE}; 
     int[] to = new int[] {R.id.textView1}; 

     View v = (View) findViewById(R.layout.layout_dois); 

     listView = (ListView) findViewById(R.id.listView1); 
     SimpleCursorAdapter meuAdaptador = new SimpleCursorAdapter(Player.this,   R.layout.layout_dois, cursor, from, to); 

     listView.setAdapter(meuAdaptador); 

     layout = listView;; 
     } 



     ((ViewPager)collection).addView((View) layout, 0);     

     return layout; 


    } 


    @Override 
    public void destroyItem(View collection, int position, Object view){ 
     ((ViewPager) collection).removeView((View)view); 

    } 

    @Override 
    public boolean isViewFromObject(View view, Object object){ 
     return view==((View)object); 
    } 

    @Override 
    public void finishUpdate(View arg0){} 

    @Override 
    public void restoreState(Parcelable arg0, ClassLoader arg1){} 

    @Override 
    public Parcelable saveState(){ 
     return null; 
    } 

    @Override 
    public void startUpdate(View arg0){} 


} 

मैं किसी को जो बाहर helpme के लिए अग्रिम में, ViewPager के पन्नों में से एक में एसडी कार्ड में संगीत की एक सूची दिखाने के लिए कोशिश कर रहा हूँ धन्यवाद।

Ps: कोड में टिप्पणियों में खराब अंग्रेजी और पुर्तगाली के लिए खेद है।

01-15 16:48:41.623: W/dalvikvm(270): threadid=1: thread exiting with uncaught exception (group=0x4001d800) 
01-15 16:48:41.653: E/AndroidRuntime(270): FATAL EXCEPTION: main 
01-15 16:48:41.653: E/AndroidRuntime(270): java.lang.NullPointerException 
01-15 16:48:41.653: E/AndroidRuntime(270): at br.com.babas.player.Player$AdaptadorDeTelas.instantiateItem(Player.java:113) 
01-15 16:48:41.653: E/AndroidRuntime(270): at android.support.v4.view.ViewPager.addNewItem(ViewPager.java:321) 
01-15 16:48:41.653: E/AndroidRuntime(270): at android.support.v4.view.ViewPager.populate(ViewPager.java:441) 
01-15 16:48:41.653: E/AndroidRuntime(270): at android.support.v4.view.ViewPager.onAttachedToWindow(ViewPager.java:563) 
01-15 16:48:41.653: E/AndroidRuntime(270): at android.view.View.dispatchAttachedToWindow(View.java:6016) 
01-15 16:48:41.653: E/AndroidRuntime(270): at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:1116) 
01-15 16:48:41.653: E/AndroidRuntime(270): at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:1121) 
01-15 16:48:41.653: E/AndroidRuntime(270): at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:1121) 
01-15 16:48:41.653: E/AndroidRuntime(270): at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:1121) 
01-15 16:48:41.653: E/AndroidRuntime(270): at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:1121) 
01-15 16:48:41.653: E/AndroidRuntime(270): at android.view.ViewRoot.performTraversals(ViewRoot.java:727) 
01-15 16:48:41.653: E/AndroidRuntime(270): at android.view.ViewRoot.handleMessage(ViewRoot.java:1727) 
01-15 16:48:41.653: E/AndroidRuntime(270): at android.os.Handler.dispatchMessage(Handler.java:99) 
01-15 16:48:41.653: E/AndroidRuntime(270): at android.os.Looper.loop(Looper.java:123) 
01-15 16:48:41.653: E/AndroidRuntime(270): at android.app.ActivityThread.main(ActivityThread.java:4627) 
01-15 16:48:41.653: E/AndroidRuntime(270): at java.lang.reflect.Method.invokeNative(Native Method) 
01-15 16:48:41.653: E/AndroidRuntime(270): at java.lang.reflect.Method.invoke(Method.java:521) 
01-15 16:48:41.653: E/AndroidRuntime(270): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
01-15 16:48:41.653: E/AndroidRuntime(270): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
01-15 16:48:41.653: E/AndroidRuntime(270): at dalvik.system.NativeStart.main(Native Method) 
+0

जब आप इसे चलाते क्या हो रहा है? क्या आपको कोई त्रुटि मिल रही है या उदाहरण के लिए कुछ भी नहीं दिखा रहा है? –

+0

ए ने त्रुटि लॉग के साथ पोस्ट संपादित किया, यह एक NullPointerException है। –

उत्तर

2

खैर के रूप में अपनी सूची में एक ही एडाप्टर सेट, एक मुद्दा मैं देख सकता हूँ तुम गलत मिल गया है वह यह है कि आईडी जब, कुछ दृश्य को संदर्भित के रूप में आप इसे एक लेआउट पहचानकर्ता पारित कर दिया गया है:

View v = (View) findViewById(R.layout.layout_dois); 

बस इसे नीचे आपका सूचीदृश्य भी अशक्त हो जाएगा। मुझे लगता है कि यह "layout_dois" लेआउट में है?

किंडा लगता है कि आप बस इसे इतना है कि यह पढ़ता बदलना चाहिए:

View v = inflater.inflate(R.layout.layout_dois, null); 
listView = (ListView) v.findViewById(R.id.listView1); 
+0

इस समस्या को हल किया, यह अब बहुत अच्छा काम कर रहा है। जैसा कि मैं अभी तक +1 नहीं दे सकता, मैं केवल इतना कह सकता हूं कि आपको बहुत धन्यवाद। –

0

इसकी काफी सरल:

यह त्रुटि है कि LogCat में पता चलता है।
अपनी एक्सएमएल में एक सूची देखें वस्तु बनाएं।
इसे अपने कोड/गतिविधि फ़ाइल में तत्काल करें:
ListView myListView = (ListView)findViewById(R.id.YOUR_LIST_VIEW_ID_IN_XML)

अब इसके लिए एडाप्टर बनाएं।
आप कर्सर एडाप्टर के लिए कुछ ट्यूटोरियल लेना चाहते हैं, तो देखें:
http://android-support-akkilis.blogspot.com/2011/11/simple-cursor-adapter-made-easy.html
अब
myListView.setAdapter(new MyCursorAdapter).

+0

मुझे लगता है कि यह ठीक है कि मैं अपने कोड में क्या कर रहा हूं, लेकिन मैं यह देखने के लिए आपका लिंक देखूंगा कि मुझे कुछ याद आया या नहीं। धन्यवाद। –