求教GridView使用问题[复制链接]

Activity:
public class GridTest extends Activity {
    int[] drawableIds = {R.drawable.f1,R.drawable.f2,R.drawable.f3,R.drawable.f4,R.drawable.f5};
    int[] nameIds = {R.string.p1,R.string.p2,R.string.p3,R.string.p4,R.string.p5};
    int[] msgIds = {R.string.m1,R.string.m2,R.string.m3,R.string.m4,R.string.m5};
   
     public List<?extends Map<String,?>> getDataList(){
            ArrayList<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
            int rowCount = drawableIds.length;
            for(int i = 0; i < rowCount; i++){
                HashMap<String,Object> map = new HashMap<String,Object>();
                map.put("c1", drawableIds);
                map.put("c2", this.getResources().getString(nameIds));
                map.put("c3", this.getResources().getString(msgIds));
                list.add(map);
            }
            return list;
        }
   
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        GridView gv = (GridView)findViewById(R.id.gv);
        SimpleAdapter sa = new SimpleAdapter(this,getDataList(),R.layout.grid_row,
                new String[]{"c1","c2","c3"},new int[]{R.id.iv01,R.id.tv02,R.id.tv03});
        
        gv.setAdapter(sa);
        
        gv.setOnItemSelectedListener(new OnItemSelectedListener(){
            public void onItemSelected(AdapterView<?> arg0, View arg1,
                    int arg2, long arg3) {
                TextView tv = (TextView)findViewById(R.id.tv);
                LinearLayout ll = (LinearLayout)arg1;
                TextView tvn = (TextView)ll.getChildAt(1);
                TextView tvnL = (TextView)ll.getChildAt(2);
                StringBuilder sb = new StringBuilder();
                sb.append(tvn.getText());
                sb.append(" ");
                sb.append(tvnL.getText());
                tv.setText(sb.toString());
            }

            public void onNothingSelected(AdapterView<?> arg0) {}        
        });
        
        gv.setOnItemClickListener(new OnItemClickListener(){
            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                    long arg3) {
                TextView tv = (TextView)findViewById(R.id.tv);
                LinearLayout ll = (LinearLayout)arg1;
                TextView tvn = (TextView)ll.getChildAt(1);
                TextView tvnL = (TextView)ll.getChildAt(2);
                StringBuilder sb = new StringBuilder();
                sb.append(tvn.getText());
                sb.append("  ");
                sb.append(tvnL.getText());
                tv.setText(sb.toString());
            }
        });
    }
}

main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView
    android:id="@+id/tv"  
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/hello"
    android:textColor="@color/white"
    android:textSize="24dip"
    />
<GridView
    android:id="@+id/gv"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:verticalSpacing="5dip"
    android:horizontalSpacing="5dip"
    android:stretchMode="columnWidth"/>
</LinearLayout>

gird_row.xml
<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schema.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:id="@+id/grll">
    <ImageView
        android:id="@+id/iv01"
        android:layout_width="100dip"
        android:layout_height="98dip"
        android:scaleType="fitXY"/>
    <TextView
        android:id="@+id/tv02"
        android:layout_width="100dip"
        android:layout_height="wrap_content"
        android:textColor="@color/white"
        android:textSize="24dip"
        android:paddingLeft="5dip"/>
    <TextView
        android:id="@+id/tv03"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="@color/white"
        android:textSize="24dip"
        android:paddingLeft="5dip"/>   
</LinearLayout>

结果报错了:FATAL EXCEPTION :main  java.lang.RuntimeException:Binary XML file line #2: You must supply a layout_width attribute.

at android.content.res.TypedArray.getLayoutDimension(TypedArray.java:491)
at android.view.ViewGroup$LayoutParams.setBaseAttribtues(ViewGroup.java:3592)
at android.view.ViewGroup$LayoutParams.<init>(ViewGroup.java:3545)
at android.widget.AbsListView$LayoutParams.<init>(AbsListView.java:
ILI 82163查看 · 4回复 · 2012-9-17 14:40 有用(0
共4个回答
nos19880918 2012-9-17 14:40 回复
clean 工程:Project标签 -> Clean...
nos19880918 2012-9-17 15:49 回复
缺少layout_width属性。但是我从你给的布局文件没看出问题,所以检查一下拼写,如果没有问题,可以clean 一下工程。
ILI 2012-9-17 16:53 回复
nos19880918 发表于 2012-9-17 15:50
clean 工程:Project标签 -> Clean...

都系唔得  后来我删咗所有代码全部重新写一次又得咗。。。。
nos19880918 2012-9-19 11:50 回复
ILI 发表于 2012-9-17 16:53
都系唔得  后来我删咗所有代码全部重新写一次又得咗。。。。

你试过这个方法吗?晕
需要登入后才可以评论 登录 | 立即注册