2013-03-07 57 views
0

我试图在自定义gridView中设置网格的ImageResource。如何在自定义gridView中设置子网格的ImageResource

ImageView imageView = (ImageView) gridview 
       .findViewById(R.id.grid_item_image); 
    imageView=(ImageView)gridview.getChildAt(10); 
      setImage(imageView); 

其中setImage(IMG)是这样

 public void setImage(ImageView imageView){ 
     imageView.setImageResource(R.drawable.ycoin); 
    } 

中定义的方法,但我正在

java.lang.ClassCastException:android.widget.LinearLayout错误。 GridView控件

<GridView 
    android:id="@+id/gridviewmain" 
    android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:background="#000000" 
android:columnWidth="0dp" 
android:minHeight="30dp" 
android:numColumns="6" 
android:paddingRight="5dp" 
android:stretchMode="columnWidth" 
android:gravity="center" 
/> 

XML部分和

<?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" 
android:padding="5dp" > 

<ImageView 
    android:id="@+id/grid_item_image" 
    android:layout_width="10px" 
    android:layout_height="20px" 
    android:layout_marginRight="0px" 
    android:src="@drawable/ic_launcher"> 
</ImageView> 

<TextView 
    android:id="@+id/grid_item_label" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
android:text="2" 
    android:layout_marginTop="5px" 
    android:textColor="#FF00FF" 
    android:textStyle="bold" 
    android:textSize="15px" > 
</TextView> 

</LinearLayout> 
+0

img在哪里它可能是imageView – Pragnani 2013-03-07 09:21:39

回答

1

你尝试这个

ImageView imageView = (ImageView) gridView.findViewById(R.id.grid_item_image); 
imageView.setImageResource(R.drawable.ycoin); 

否则请提供您的XML代码。那么只有我们可以帮助你。

其实我不知道你的问题是什么。我会提供答案。尝试一下。

我们GridActivity是

public class HomeActivity extends Activity { 

    static final String[] images = { "Name 1", "Name 2", "Name 3", 
    "Name 4", "Name 5", "Name 5" }; 

    GridView grid;  

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.actvity_home); 
     grid = (GridView) findViewById(R.id.gridView1); 
     grid.setAdapter(new ImageAdapter(this, images)); 

     grid.setOnItemClickListener(new OnItemClickListener() { 

      public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, 
        long arg3) { 
       String label = ((TextView) arg1.findViewById(R.id.grid_item_label)).getText().toString(); 

       if (label.equals("Name 1")) { 
        Intent firstActivity = new Intent(HomeActivity.this, 
          FirstActivity.class); 
        startActivity(mastersActivity); 
       } else if (label.equals("Name 2")) { 
        Intent secondActivity = new Intent(HomeActivity.this, 
          SecondActivity.class); 
startActivity(secondActivity); 
       } else if (label.equals("Name 3")) { 
        Intent thirdActivity = new Intent(HomeActivity.this, 
          thirdActivity.class); 
startActivity(thirdActivity); 
       } else if (label.equals("Name 4")) { 
        Intent fourthActivity = new Intent(HomeActivity.this, 
          fourthActivity.class); 
startActivity(fourthActivity); 
       } else if (label.equals("Name 5")) { 
        Intent secondActivity = new Intent(HomeActivity.this, 
          fifthActivity.class); 
startActivity(fifthActivity); 
       } else if (label.equals("Name 6")) { 
        Intent sixthActivity = new Intent(HomeActivity.this, 
          sixthActivity.class); 
startActivity(sixthActivity); 
       } 
      } 
     });   
    } 
} 

那么我们的图像适配器类会。

public class ImageAdapter extends BaseAdapter {0}私有上下文上下文; private final String [] mobileValues;

public ImageAdapter(Context context, String[] mobileValues) { 
    this.context = context; 
    this.mobileValues = mobileValues; 
} 

public View getView(int position, View convertView, ViewGroup parent) { 

    LayoutInflater inflater = (LayoutInflater) context 
      .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

    View gridView; 

    if (convertView == null) { 

     gridView = new View(context); 

     // get layout from mobile.xml 
     gridView = inflater.inflate(R.layout.grid, null); 

     // set value into textview 
     TextView textView = (TextView) gridView 
       .findViewById(R.id.grid_item_label); 
     textView.setText(mobileValues[position]); 

     // set image based on selected text 
     ImageView imageView = (ImageView) gridView 
       .findViewById(R.id.grid_item_image); 

     String mobile = mobileValues[position]; 

     if (mobile.equals("Name 1")) { 
      imageView.setImageResource(R.drawable.image1); 
     } else if (mobile.equals("Name 2")) { 
      imageView.setImageResource(R.drawable.image2); 
     } else if (mobile.equals("Name 3")) { 
      imageView.setImageResource(R.drawable.image3); 
     } else if (mobile.equals("Name 4")) { 
      imageView.setImageResource(R.drawable.image4); 
     }else if (mobile.equals("Name 5")) { 
      imageView.setImageResource(R.drawable.image5); 
     }else if (mobile.equals("Name 6")) { 
      imageView.setImageResource(R.drawable.image6); 
     } 

    } else { 
     gridView = (View) convertView; 
    } 

    return gridView; 
} 

public int getCount() { 
    return mobileValues.length; 
} 

public Object getItem(int position) { 
    return null; 
} 

public long getItemId(int position) { 
    return 0; 
} 
} 

activity_home.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

      <GridView 
       android:id="@+id/gridView1" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent"    
       android:numColumns="2"> 
      </GridView> 

</LinearLayout> 

grid.xml

<ImageView 
    android:id="@+id/grid_item_image" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center" 
    android:src="@drawable/ic_launcher" > 
</ImageView> 

<TextView 
    android:id="@+id/grid_item_label" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center" 
    android:layout_marginTop="1dp" 
    android:text="@+id/label" 
    android:textColor="#ffffff" 
    android:textSize="15dp" > 
</TextView> 

试试这个。我希望这会帮助你

+0

我试着用这个编码,然后它也显示相同的error.please帮助 – Ann 2013-03-07 09:43:39

1
imageView=(ImageView)gridview.getChildAt(10); 

这将返回带有imageview和TextView的LinearLayout。当您尝试投射它时,它会抛出ClassCastException

试试这个

LinearLayout layout=gridview.getChildAt(10); 
imageview=(ImageView)layout.findViewById(R.id.grid_item_image) 

我希望这会帮助你。

相关问题