如何设置一个子网格ImageResource在定制的GridView [英] How can I set the ImageResource of a child grid in customized gridView
问题描述
我试图设置自定义的GridView网格的ImageResource。
ImageView的ImageView的=(ImageView的)GridView控件
.findViewById(R.id.grid_item_image);
ImageView的=(ImageView的)gridview.getChildAt(10);
setImage(ImageView的);
在这里setImage(IMG)是这样定义的方法
公共无效setImage(ImageView的ImageView的){
imageView.setImageResource(R.drawable.ycoin);
}
但我正在逐渐
java.lang.ClassCastException:android.widget.LinearLayout误差
GridView控件的XML部分
< GridView控件
机器人:ID =@ + ID / gridviewmain
机器人:layout_width =FILL_PARENT
机器人:layout_height =WRAP_CONTENT
机器人:背景=#000000
机器人:columnWidth时=0dp
安卓了minHeight =30dp
机器人:为numColumns =6
机器人:paddingRight =5DP
机器人:stretchMode =columnWidth时
机器人:比重=中心
/>
和
<?XML版本=1.0编码=UTF-8&GT?;
< LinearLayout中的xmlns:机器人=http://schemas.android.com/apk/res/android
机器人:layout_width =WRAP_CONTENT
机器人:layout_height =WRAP_CONTENT
机器人:填充=5DP>< ImageView的
机器人:ID =@ + ID / grid_item_image
机器人:layout_width =10px的
机器人:layout_height =20像素
机器人:layout_marginRight =0像素
机器人:SRC =@绘制/ ic_launcher>
< / ImageView的><的TextView
机器人:ID =@ + ID / grid_item_label
机器人:layout_width =WRAP_CONTENT
机器人:layout_height =WRAP_CONTENT
机器人:文字=2
机器人:layout_marginTop =5像素
机器人:文字颜色=#FF00FF
机器人:文字样式=大胆
机器人:TEXTSIZE =15px的>
< / TextView的>< / LinearLayout中>
你试试这个
ImageView的ImageView的=(ImageView的)gridView.findViewById(R.id.grid_item_image);
imageView.setImageResource(R.drawable.ycoin);
否则请提供您的XML code。那么只有我们可以帮助你。
其实我不知道你有什么问题。我公司将提供孔回答。试试吧。
我们的GridActivity是
公共类HomeActivity延伸活动{ 静态最后的String [] =图像{名称1,名称2,3名
名称4,名称5,名称5}; GridView的网格; @覆盖
保护无效的onCreate(捆绑savedInstanceState){ super.onCreate(savedInstanceState);
的setContentView(R.layout.actvity_home);
格=(GridView控件)findViewById(R.id.gridView1);
grid.setAdapter(新ImageAdapter(这一点,图像)); grid.setOnItemClickListener(新OnItemClickListener(){ 公共无效onItemClick(适配器视图<>为arg0,ARG1观,诠释ARG2,
长ARG3){
字符串标签=((的TextView)arg1.findViewById(R.id.grid_item_label))的getText()的toString()。 如果(label.equals(名称1)){
意图firstActivity =新意图(HomeActivity.this,
FirstActivity.class);
startActivity(mastersActivity);
}否则如果(label.equals(名称2)){
意图secondActivity =新意图(HomeActivity.this,
SecondActivity.class);
startActivity(secondActivity);
}否则如果(label.equals(名称3)){
意图thirdActivity =新意图(HomeActivity.this,
thirdActivity.class);
startActivity(thirdActivity);
}否则如果(label.equals(名称4)){
意图fourthActivity =新意图(HomeActivity.this,
fourthActivity.class);
startActivity(fourthActivity);
}否则如果(label.equals(名称5)){
意图secondActivity =新意图(HomeActivity.this,
fifthActivity.class);
startActivity(fifthActivity);
}否则如果(label.equals(名称6)){
意图sixthActivity =新意图(HomeActivity.this,
sixthActivity.class);
startActivity(sixthActivity);
}
}
});
}
}
那么,我们的形象适配器类会。
公共类ImageAdapter延伸BaseAdapter {
私人上下文的背景下;
私人最终的String [] mobileValues;
公共ImageAdapter(上下文的背景下,字符串[] mobileValues){
this.context =背景;
this.mobileValues = mobileValues;
}公共查看getView(INT位置,查看convertView,父母的ViewGroup){ LayoutInflater吹气=(LayoutInflater)上下文
.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 查看GridView控件; 如果(convertView == NULL){ GridView控件=新景(背景); //从mobile.xml布局
GridView控件= inflater.inflate(R.layout.grid,NULL); //设定值成的TextView
TextView中的TextView =(TextView的)GridView控件
.findViewById(R.id.grid_item_label);
textView.setText(mobileValues [位置]); 根据选定的文本//图片集
ImageView的ImageView的=(ImageView的)GridView控件
.findViewById(R.id.grid_item_image); 字符串移动= mobileValues [位置] 如果(mobile.equals(名称1)){
imageView.setImageResource(R.drawable.image1);
}否则如果(mobile.equals(名称2)){
imageView.setImageResource(R.drawable.image2);
}否则如果(mobile.equals(名称3)){
imageView.setImageResource(R.drawable.image3);
}否则如果(mobile.equals(名称4)){
imageView.setImageResource(R.drawable.image4);
}否则如果(mobile.equals(名称5)){
imageView.setImageResource(R.drawable.image5);
}否则如果(mobile.equals(名称6)){
imageView.setImageResource(R.drawable.image6);
} }其他{
GridView控件=(查看)convertView;
} 返回GridView控件;
}公众诠释的getCount(){
返回mobileValues.length;
}公共对象的getItem(INT位置){
返回null;
}众长getItemId(INT位置){
返回0;
}
}
activity_home.xml
<?XML版本=1.0编码=UTF-8&GT?;
< LinearLayout中的xmlns:机器人=http://schemas.android.com/apk/res/android
机器人:layout_width =match_parent
机器人:layout_height =match_parent
机器人:方向=垂直> < GridView控件
机器人:ID =@ + ID / gridView1
机器人:layout_width =match_parent
机器人:layout_height =match_parent
机器人:为numColumns =2>
< / GridView的>< / LinearLayout中>
grid.xml
< ImageView的
机器人:ID =@ + ID / grid_item_image
机器人:layout_width =WRAP_CONTENT
机器人:layout_height =WRAP_CONTENT
机器人:layout_gravity =中心
机器人:SRC =@绘制/ ic_launcher>
< / ImageView的><的TextView
机器人:ID =@ + ID / grid_item_label
机器人:layout_width =WRAP_CONTENT
机器人:layout_height =WRAP_CONTENT
机器人:layout_gravity =中心
机器人:layout_marginTop =1DP
机器人:文字=@ + /标记
机器人:文字颜色=#FFFFFF
机器人:TEXTSIZE =15dp>
< / TextView的>
试试这个。我希望这会帮助你。
I am trying to set the ImageResource of a grid in customized gridView.
ImageView imageView = (ImageView) gridview
.findViewById(R.id.grid_item_image);
imageView=(ImageView)gridview.getChildAt(10);
setImage(imageView);
where setImage(img) is a method defined like this
public void setImage(ImageView imageView){
imageView.setImageResource(R.drawable.ycoin);
}
but I am getting
java.lang.ClassCastException: android.widget.LinearLayout error.
xml part of 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"
/>
and
<?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>
Did you try this
ImageView imageView = (ImageView) gridView.findViewById(R.id.grid_item_image);
imageView.setImageResource(R.drawable.ycoin);
or else please provide your xml code. Then only we can help you.
Actually I don't know what is your problem. I will provide hole answer. Try it.
Our GridActivity is
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);
}
}
});
}
}
then our image adapter class will be.
public class ImageAdapter extends BaseAdapter { private Context context; 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>
Try this. I hope this will help you
这篇关于如何设置一个子网格ImageResource在定制的GridView的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!