Android 每个单元格中同时包含图像和文本的Gridview-OnClickListener ClassCastException错误

Android 每个单元格中同时包含图像和文本的Gridview-OnClickListener ClassCastException错误,android,gridview,Android,Gridview,我正在使用gridview,其中每个单元格都包含一个图像和一行文本。我想做的是在用户在gridview中选择该项目时更改图像。当只有图像而没有文本时,我就开始工作了,但是当更改单元格以同时包含图像和文本时,我得到了错误: java.lang.ClassCastException: android.widget.LinearLayout 错误发生在我试图获取所选项目的imageview的行上 ImageView ivCheck = (ImageView)parent.getChildAt(pos

我正在使用gridview,其中每个单元格都包含一个图像和一行文本。我想做的是在用户在gridview中选择该项目时更改图像。当只有图像而没有文本时,我就开始工作了,但是当更改单元格以同时包含图像和文本时,我得到了错误:

java.lang.ClassCastException: android.widget.LinearLayout
错误发生在我试图获取所选项目的imageview的行上

ImageView ivCheck = (ImageView)parent.getChildAt(position);
据我所知,这是因为我目前所做的无法将textview与imageview分开。。。然而,我不确定有什么办法可以做到这一点

代码如下:

grid.xml:

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

icon.xml:

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/widget44"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_x="201px"
android:layout_y="165px"
android:gravity="center_horizontal">

<ImageView
android:id="@+id/icon_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</ImageView>

<TextView
android:id="@+id/icon_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView"
android:gravity="center_horizontal"
android:textColorHighlight="#656565">
</TextView>
</LinearLayout>

相关java代码:

gridview.setAdapter(new ImageAdapter(this));
gridview.setOnItemClickListener(new OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
    //Setting tags, and resetting after failed match
    System.out.println(parent + ", " + v + ", " + position + ", " + id);
    for (int i = 0; i < tiles.length; i++){
        ImageView ivCheck = (ImageView)parent.getChildAt(i); //error here
gridview.setAdapter(新的ImageAdapter(this));
setOnItemClickListener(新的OnItemClickListener(){
public void onItemClick(AdapterView父视图、视图v、整型位置、长id){
//设置标记,并在匹配失败后重置
系统输出打印项次(父项+”、“+v+”、“+position+”、“+id”);
对于(int i=0;i

我已经阅读了许多关于使用图像和文本创建GridView的教程,但是很难找到一个同时使用onclicklistener的教程,因为它会更改选定单元格中的图像。我非常感谢您的帮助!

只需使用
View v
参数访问您要修改的视图即可

像这样:

LinearLayout icon = (LinearLayout)v;
ImageView image = icon.findViewById(R.id.icon_image);
// do stuff with image here

请注意,如果用户滚动离开此项目,您所做的更改将不会保存!这是因为当该
视图因滚动而离开屏幕时,GridView将回收该
视图。如果您希望允许用户修改
GridView
中的项目,并在它们滚动离开并返回时将其记住您需要更改填充此
GridView的
适配器

哇,这是一个非常简单的解决方案!我刚刚测试了它,它可以正常工作。谢谢您,Satura9Nine!对于此应用程序,滚动不会成为问题。