Android-Gridview带有自定义BaseAdapter,点击查看位置
我创建了一个gridview,它显示字母表中的字母。我使用自定义BaseAdapter用字符串数组填充gridview 我想做的是能够在GridView中的某个位置获取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.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);