dynamsik ListView inuti ViewPager

Discussion in 'Frågor, support och diskussion' started by niklu147, May 12, 2012.

  1. niklu147

    niklu147 Infant Droid Medlem

    Joined:
    Apr 15, 2010
    Messages:
    4
    Likes Received:
    0

    MINA ENHETER

    Code:
    
    
    Hej

    Är ny på android/java utvecklig och försöker sätta ihop en app som har tre sidor man kan swipa mellan och där ena sidan inehåller en lista som fylls på dynamiskt.

    Jag kan fylla på listan dynamiskt när den ligger som ensam layout direkt i main.

    Jag kan skapa en viewpager med tre vyer att swipa emellan, men när jag lägger listview'n i ena viewpager sidan "separat xml" så lyckas jag inte få tag i den/uppdatera den utan får bara nullreference error,


    MAIN:

    <android.support.v4.view.ViewPager
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/mypanelpager"/>
    Code:
    @Override
    public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            context = this;
    
            final ViewPager myPager = (ViewPager) findViewById(R.id.mypanelpager); 
            myPager.setAdapter(new MyPagerAdapter()); 
            myPager.setCurrentItem(1);
            
            ListView listView1 = (ListView)myPager.findViewById(R.id.listView1);
            View header = (View)getLayoutInflater().inflate(R.layout.listview_header_row, null);
            listView1.addHeaderView(header);  <--- NullReferenceError (Så vitt jag tyder loggen rätt)
    
        }
    
    MyPageAdapter:
    Code:
    public class MyPagerAdapter extends PagerAdapter {         
    	
    	public int getCount() {            
    		return 3;        
    	}         
    	
    	@Override
    	public Object instantiateItem(View collection, int position) {             
    		LayoutInflater inflater = (LayoutInflater) collection.getContext()
    				.getSystemService(Context.LAYOUT_INFLATER_SERVICE);        
    		
    		int resId = 0;            
    		switch (position) {            
    			case 0:                
    				resId = R.layout.left;                
    				break;            
    			case 1:                
    				resId = R.layout.middle;  
    				break;            
    			case 2:                
    				resId = R.layout.right;               
    				break;            
    		}             
    		
    		View view = inflater.inflate(resId, null);             
    		((ViewPager) collection).addView(view, 0);             
    		return view;        
    	}         
    	
    	@Override        
    	public void destroyItem(View arg0, int arg1, Object arg2) {            
    		((ViewPager) arg0).removeView((View) arg2);         
    	}        
    	
    	@Override        
    	public boolean isViewFromObject(View arg0, Object arg1) {            
    		return arg0 == ((View) arg1);         
    	}         
    	
    	@Override        
    	public Parcelable saveState() {            
    		return null;        
    	}
    
    	 
    }
    
    Har letat som en galning utan resultat så jag tänkte att det kanske finns någon vänlig själ här som vet hur detta fungerar =p

    Tack på förhand!
    Niklas
     
  2. Summered

    Summered Teen Droid Medlem

    Joined:
    Jan 11, 2010
    Messages:
    302
    Likes Received:
    17

    MINA ENHETER

    Skulle vara fint med en logcat så att man kan få en lite bättre aning om vad det är som går snett :)
     
  3. niklu147

    niklu147 Infant Droid Medlem

    Joined:
    Apr 15, 2010
    Messages:
    4
    Likes Received:
    0

    MINA ENHETER

    Här är en utskrift från loggen:

    Register eller för att visa innehållet!

    Verkar vara att den inte hittar vyn,

    Ska kanske försöka förklara upplägget lite bättre.

    Jag har min main activity där jag vi start initierar min viewPager med följande cod

    Code:
    MyPagerAdapter adapter = new MyPagerAdapter(this);    
            ViewPager myPager = (ViewPager) findViewById(R.id.mypanelpager);   
            myPager.setAdapter(adapter);    
            myPager.setCurrentItem(1);
    
    den har en egen adapter som i sin tur laddar tre vyer från olika xml filer för att skapa tre stycken olika sidor.

    Har följt den här guiden:
    http://mobile.tutsplus.com/tutorials/android/android-user-interface-design-horizontal-view-paging/

    sedan har jag i ena vyn, den som är satt till currentItem i början, en listView den vill jag uppdatera dynamiskt med element.

    Har även en adapter för att fylla den vilket fungerar fin när listView'n ligger i main.xml för då går det att få tag i den

    Känner mig lite lost =p
     
  4. Summered

    Summered Teen Droid Medlem

    Joined:
    Jan 11, 2010
    Messages:
    302
    Likes Received:
    17

    MINA ENHETER

    Vad får du för output om du skriver ut vad "header" är innan NPE-raden?