如何设置一个子网格ImageResource在定制的GridView [英] How can I set the ImageResource of a child grid in customized gridView

查看:127
本文介绍了如何设置一个子网格ImageResource在定制的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:机器人=htt​​p://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:机器人=htt​​p://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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆