Android-Gridview带有自定义BaseAdapter,点击查看位置

Android-Gridview带有自定义BaseAdapter,点击查看位置,android,gridview,baseadapter,Android,Gridview,Baseadapter,我创建了一个gridview,它显示字母表中的字母。我使用自定义BaseAdapter用字符串数组填充gridview 我想做的是能够在GridView中的某个位置获取按钮视图 例如,我希望能够从我的gridView.setOnItemClickListener()设置所单击按钮的背景色 到目前为止,我能够从某个位置的字符串数组中获取文本,但我不知道如何获取单击的按钮 活动\u main.xml <RelativeLayout xmlns:android="http://schemas.a

我创建了一个gridview,它显示字母表中的字母。我使用自定义BaseAdapter用字符串数组填充gridview

我想做的是能够在GridView中的某个位置获取
按钮
视图

例如,我希望能够从我的
gridView.setOnItemClickListener()
设置所单击按钮的背景色

到目前为止,我能够从某个位置的字符串数组中获取文本,但我不知道如何获取单击的按钮

活动\u main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    tools:ignore="MergeRootFrame" >

    <GridView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/myGridView"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:numColumns="7" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text="Large Text"
        android:id="@+id/feedback"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true" />
</RelativeLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <Button
        android:id="@+id/grid_item"
        android:layout_gravity="center"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="05"
        android:textSize="20sp"
        android:clickable="false"
        android:focusable="false"/>
    </Button>

</LinearLayout>
这是它的样子

1)如果您只需要更改背景颜色或smth,则最好使用选择器

2) 在您的示例中,您不必膨胀xml文件,然后查找按钮,您可以动态创建一个按钮,然后直接返回该按钮

3) 如果您必须膨胀复杂视图-在onItemClick Listener中,您可以通过adapter\gridview.getItem获取视图,然后,当您收到视图时,可以执行findViewById并找到所有必要的视图。

在onItemClick()中

在CustomGridAdapter中:

public int itemSelected = -1;

getView(..)

    TextView tv = (TextView) convertView.findViewById(R.id.feedback);
    if (itemSelected == position) {            
        tv.setBackgroundColor(int selectedcolor);
    } else {
        tv.setBackgroundColor(int unselectcolor);
    }

我自己想出来的。我刚刚将我的cell.xml更改为:

<Button xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/grid_item"
        android:layout_gravity="center"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="05"
        android:textSize="20sp"
        android:clickable="false"
        android:focusable="false"/>
    </Button>
gridAdapter.itemSelected = position;
public int itemSelected = -1;

getView(..)

    TextView tv = (TextView) convertView.findViewById(R.id.feedback);
    if (itemSelected == position) {            
        tv.setBackgroundColor(int selectedcolor);
    } else {
        tv.setBackgroundColor(int unselectcolor);
    }
<Button xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/grid_item"
        android:layout_gravity="center"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="05"
        android:textSize="20sp"
        android:clickable="false"
        android:focusable="false"/>
    </Button>
Button button = (Button) gridView.getChildAt(position);