2012-06-12 122 views
1

我有一個GridView和一個SimpleCursorAdapter爲此。代碼如下所示Android GridView適配器定製

GridView myGridView = (GridView) this.freePassDialog.findViewById(R.id.gridview_buttons); 
    String[] column = { "name", "type" }; 
    int[] viewIds = new int[] { R.id.name_button, R.id.type_button }; 

    SimpleCursorAdapter myCursorAdapter = new SimpleCursorAdapter(this.parent, R.layout.row_free_pass_buttons, cursor, column, viewIds) { 

     /** 
     * {@inheritDoc} 
     * @see android.widget.SimpleCursorAdapter#bindView(android.view.View, android.content.Context, android.database.Cursor) 
     */ 
     @Override 
     public void bindView(View view, Context context, Cursor cursor) { 
      String freePassName = cursor.getString(cursor.getColumnIndex("name")); 
      String freePassType = cursor.getString(cursor.getColumnIndex("type")); 
      Button freePassBtn = (Button) view.findViewById(R.id.pass_name_button); 
      if (PaymentMethodType.SMARTCARD_PASS == PaymentMethodType.valueOf(freePassType)) { 
       freePassBtn.setVisibility(View.GONE); 
      } else { 
       freePassBtn.setVisibility(View.VISIBLE); 
      } 
      super.bindView(view, context, cursor); 
     } 
    }; 
    myGridView.setAdapter(myCursorAdapter); 

光標有4個值,但對我來說,如果我把一些伐木工人到BindView方法只有第一個值來幾次 有人能幫助我嗎? 感謝

回答

0

我看沒有錯,你發佈的代碼......雖然每一個例子我能找到這樣的事情節目的覆蓋都newView以及bindView。也許你應該實施一個newView覆蓋?

@Override 
public View newView(Context context, Cursor cursor, ViewGroup parent) { 
    final LayoutInflater inflater = LayoutInflater.from(context); 
    View v = inflater.inflate(layout, parent, false); 
    return v; 
} 
+0

不工作...我在我的應用程序的其他部分使用相同的代碼,並正常工作。在這個地方只是看不到光標的全部內容。 – tinti

+0

只是爲了確保我明白...你只在gridview中獲得一個項目,或者你在gridview中獲得一個項目的四個副本? – Barak

+0

我只得到光標的第一個值,但在許多副本中......超過4個。 – tinti