开发者社区> 问答> 正文

关于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

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

展开
收起
爵霸 2016-03-10 09:12:22 2099 0
1 条回答
写回答
取消 提交回答
  • gridView.findViewById(R.id.gridView); 这里你没有实例化gridview

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

    2019-07-17 18:56:45
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
58同城Android客户端Walle框架演进与实践之路 立即下载
Android组件化实现 立即下载
蚂蚁聚宝Android秒级编译——Freeline 立即下载