2015-10-28 43 views
0

我無法在Grid View尋呼機中設置當前項目。這裏是我的代碼:Android:在GridViewPager上設置當前項目

public class GridActivity extends Activity { 

private GridAdapter GridAdapter; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_grid); 

    final Resources res = getResources(); 
    final GridViewPager pager = (GridViewPager) findViewById(R.id.pager); 

    GridAdapter = new GridAdapter(this, getFragmentManager()); 

    pager.setAdapter(GridAdapter); 

    pager.setCurrentItem(0, 1); 

    DotsPageIndicator dotsPageIndicator = (DotsPageIndicator) findViewById(R.id.page_indicator); 
    dotsPageIndicator.setPager(pager); 

    }; 

} 

適配器類

public class GridAdapter extends FragmentGridPagerAdapter { 

    private final Context mContext; 
    private List <Row> mRows; 

    public GridAdapter(Context ctx, FragmentManager fm, DataMap dm) { 

     super(fm); 
     mContext = ctx; 

     mRows = new ArrayList <Row>(); 

     Row row = new Row(); 

     int position = 0; 

     for(DataMap attendee : dm.getDataMapArrayList("array")) { 
      AFragment af = new AFragment(); 
      dm.putInt("tag", position); 
      af.setArguments(dm.toBundle()); 

      row.add(af); 
      position++; 
     } 

     mRows.add(row); 

    } 


    private Fragment cardFragment(int titleRes, int textRes) { 
     Resources res = mContext.getResources(); 
     CardFragment fragment = 
       CardFragment.create(res.getText(titleRes), res.getText(textRes)); 
     // Add some extra bottom margin to leave room for the page indicator 
     fragment.setCardMarginBottom(
       res.getDimensionPixelSize(R.dimen.card_margin_bottom)); 
     return fragment; 
    } 

    private class Row { 

     final List<Fragment> columns = new ArrayList<Fragment>(); 

     public Row(Fragment... fragments) { 
      for (Fragment f : fragments) { 
       add(f); 
      } 
     } 

     public void add(Fragment f) { 
      columns.add(f); 
     } 

     Fragment getColumn(int i) { 
      return columns.get(i); 
     } 

     public int getColumnCount() { 
      return columns.size(); 
     } 
    } 

    @Override 
    public Fragment getFragment(int row, int col) { 
     Row adapterRow = mRows.get(row); 
     return adapterRow.getColumn(col); 
    } 

    @Override 
    public int getRowCount() { 
     return mRows.size(); 
    } 

    @Override 
    public int getColumnCount(int rowNum) { 
     return mRows.get(rowNum).getColumnCount(); 
    } 

    } 

我設置的尋呼機目前的項目,但它不工作,開頭總是在第一頁上。

+0

請附上烏爾適配器類。 – Mahalakshmi

回答

3

我發現這樣一種解決方法設置適配器之後:

pager.addOnLayoutChangeListener(new View.OnLayoutChangeListener() { 
     @Override 
     public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) { 
      pager.setCurrentItem(0, position, false); 
      pager.getAdapter().notifyDataSetChanged(); 
      pager.removeOnLayoutChangeListener(this); 
     } 
    }); 
相關問題