2011-10-07 65 views
-2

我試圖使用HelloGridView示例代碼。在getView()中添加按鈕GridView

我希望爲每個網格添加按鈕。 從研究中,似乎我必須在getView適配器方法中創建按鈕而不是圖像視圖。

但是,我不知道如何在getView()方法中創建按鈕。

任何人都可以好心地告訴我如何在方法中創建一個按鈕?

謝謝!

回答

1

我想做同樣的事情,所以我所做的就是使用一個xml文件和一個帶有一些代碼的layoutinflater。

XML包含的GridView:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:padding="10dp" > 
<GridView 
    android:id="@+id/gridview2" 
    android:layout_width="fill_parent" 
    android:layout_height="250dp" 
    android:columnWidth="90dp" 
    android:numColumns="auto_fit" 
    android:verticalSpacing="5dp" 
    android:horizontalSpacing="5dp" 
    android:stretchMode="columnWidth" 
    android:gravity="center" /> 
</LinearLayout> 

這是我的基地GridView中,我在您的adapter.getView方法用於GridView的 「細胞」 的XML文件名爲grid_item.xml

<?xml version="1.0" encoding="utf-8" ?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/GridItem" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:orientation="vertical" > 
<Button 
    android:id="@+id/GridItem_Button" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"/> 
</LinearLayout> 

然後

public View getView(final int position, View convertView, ViewGroup parent) { 
View mView = convertView; 
if(convertView == null) { 

// I use a cursor for the content which is setup elsewhere 
cursor.moveToPosition(position); 
// inflate the layout to edit it 
LayoutInflater li = (LayoutInflater) Context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
mView = li.inflate(R.layout.grid_item, null); 
// not we can get the button defined in grid_item.xml 
Button b = (Button) mView.findViewById(R.id.GridItem_Button); 
// set the button text based on the cursor/your content 
b.setText(cursor.getString(0); 
// now we can also do an OnClickListener 
b.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
    // do something on button click 
    } 
}); 
} 
return mView; 
} 

這對我很好用 起初我是混淆編輯onClickListener我應該使用和按鈕它的工作將onClickListener添加到按鈕,但否則它似乎更好地將onItemClickListener自己的GridView。 如果有什麼不清楚請讓我知道。

尼克