斜月三星洞 2016-03-21 12:58 采纳率: 50%
浏览 1872
已采纳

android 中自定义GridView的使用

楼主最近在学习安卓,用和ListView类似的方法实现Gridview的时候出现了问题。希望高手能指点一二。

aty_using_gridview.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">

    <GridView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/gridView"
        android:numColumns="3"/>
</LinearLayout>

grid_view_cell.xml

 <?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="100dp"
    android:layout_height="100dp">

    <ImageView
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:id="@+id/img_grid_view" />
</FrameLayout>

这个是Activity

 public class AtyUsingGridView extends Activity {


    private GridView  gridView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.aty_using_gridview);


        ImageGridViewAdapter adapter=new ImageGridViewAdapter(this);
        gridView.findViewById(R.id.gridView);
        gridView.setAdapter(adapter);
    }
}


这个是adapter

 public class ImageGridViewAdapter extends BaseAdapter {
        private Context context=null;
        private  ImageGridViewData data[]= {
                new ImageGridViewData( R.drawable.img2),
                new ImageGridViewData(R.drawable.img2),
                new ImageGridViewData( R.drawable.img2),
        };

        public ImageGridViewAdapter(Context context){
            this.context=context;
        }
        public Context getContext() {
            return context;
        }

        @Override
        public int getCount() {
            return data.length;
        }

        @Override
        public ImageGridViewData getItem(int i) {
            return data[i];
        }

        @Override
        public long getItemId(int i) {
            return i;
        }

        @Override
        public View getView(int i, View view, ViewGroup viewGroup) {
            FrameLayout fl=null;
            if(view!=null){
                fl=( FrameLayout)view;
            }else{
                fl= ( FrameLayout) LayoutInflater.from(getContext()).inflate(R.layout.grid_view_cell,null);
            }
            ImageGridViewData data=getItem(i);
            ImageView imgID=(ImageView)fl.findViewById(R.id.img_grid_view);

            imgID.setImageResource(data.imgID);

            return fl;
        }
    }

运行出现错误如下
Unable to start activity
java.lang.NullPointerException

我这有什么错误,希望高手给指出啊,万分感谢。

  • 写回答

3条回答

  • 103style 2016-03-22 01:33
    关注

    gridView.findViewById(R.id.gridView); 这里你没有实例化gridview

    改为gridview = gridView.findViewById(R.id.gridView)

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
  • ¥15 乘性高斯噪声在深度学习网络中的应用