gridview_item布局中的Android NullPointerException布局膨胀

时间:2014-05-05 18:38:41

标签: android gridview

我正在使用gridView,我无法理解为什么它会在我对gridview_item布局进行膨胀的行中崩溃并显示NullPointerExeption。谢谢!

Galerie.java:

package com.descoper.rom;

import android.content.Context;
import android.os.Bundle;
import android.app.Activity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.List;

public class Galerie extends Activity
{

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.galerie);

        GridView gridView = (GridView)findViewById(R.id.gridview);
        gridView.setAdapter(new MyAdapter(this));
    }

    private class MyAdapter extends BaseAdapter
    {
        private List<Item> items = new ArrayList<Item>();
        private LayoutInflater inflater;

        public MyAdapter(Context context)
        {
            inflater = LayoutInflater.from(context);

            items.add(new Item("Casa poporului", R.drawable.casapoporului));
            items.add(new Item("Image 2", R.drawable.colibita));
            items.add(new Item("Image 3", R.drawable.salinapraid));
            items.add(new Item("Image 4", R.drawable.salinapraid));
            items.add(new Item("Image 5", R.drawable.cascadacailor));
        }

        @Override
        public int getCount() {
            return items.size();
        }

        @Override
        public Object getItem(int i)
        {
            return items.get(i);
        }

        @Override
        public long getItemId(int i)
        {
            return items.get(i).drawableId;
        }

        @Override
        public View getView(int i, View view, ViewGroup viewGroup)
        {
            View v = view;
            ImageView picture;
            TextView name;

            if(v == null)
            {
               v = inflater.inflate(R.layout.gridview_item, viewGroup, false);
               v.setTag(R.id.picture, v.findViewById(R.id.picture));
               v.setTag(R.id.text, v.findViewById(R.id.text));
            }

            picture = (ImageView)v.getTag(R.id.picture);
            name = (TextView)v.getTag(R.id.text);

            Item item = (Item)getItem(i);

            picture.setImageResource(item.drawableId);
            name.setText(item.name);

            return v;
        }

        private class Item
        {
            final String name;
            final int drawableId;

            Item(String name, int drawableId)
            {
                this.name = name;
                this.drawableId = drawableId;
            }
        }
    }
}

gridview_item.xml:

<?xml version="1.0" encoding="utf-8"?>

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <com.rogcg.gridviewexample.SquareImageView
        android:id="@+id/picture"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scaleType="centerCrop"
        />
    <TextView
        android:id="@+id/text"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingLeft="10dp"
        android:paddingRight="10dp"
        android:paddingTop="15dp"
        android:paddingBottom="15dp"
        android:layout_gravity="bottom"
        android:textColor="@android:color/white"
        android:background="#55000000"
        />
</FrameLayout>

Galerie.java第72行:

v = inflater.inflate(R.layout.gridview_item, viewGroup, false);

logcat的:

05-05 14:33:01.822: E/AndroidRuntime(1361): FATAL EXCEPTION: main
05-05 14:33:01.822: E/AndroidRuntime(1361): Process: com.descoper.rom, PID: 1361
05-05 14:33:01.822: E/AndroidRuntime(1361): android.view.InflateException: Binary XML file line #7: Error inflating class com.rogcg.gridviewexample.SquareImageView
05-05 14:33:01.822: E/AndroidRuntime(1361):     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:707)
05-05 14:33:01.822: E/AndroidRuntime(1361):     at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
05-05 14:33:01.822: E/AndroidRuntime(1361):     at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
05-05 14:33:01.822: E/AndroidRuntime(1361):     at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
05-05 14:33:01.822: E/AndroidRuntime(1361):     at com.descoper.rom.Galerie$MyAdapter.getView(Galerie.java:72)
05-05 14:33:01.822: E/AndroidRuntime(1361):     at android.widget.AbsListView.obtainView(AbsListView.java:2263)
05-05 14:33:01.822: E/AndroidRuntime(1361):     at android.widget.GridView.onMeasure(GridView.java:1044)
05-05 14:33:01.822: E/AndroidRuntime(1361):     at android.view.View.measure(View.java:16497)
05-05 14:33:01.822: E/AndroidRuntime(1361):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
05-05 14:33:01.822: E/AndroidRuntime(1361):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
05-05 14:33:01.822: E/AndroidRuntime(1361):     at android.view.View.measure(View.java:16497)
05-05 14:33:01.822: E/AndroidRuntime(1361):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
05-05 14:33:01.822: E/AndroidRuntime(1361):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
05-05 14:33:01.822: E/AndroidRuntime(1361):     at android.view.View.measure(View.java:16497)
05-05 14:33:01.822: E/AndroidRuntime(1361):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
05-05 14:33:01.822: E/AndroidRuntime(1361):     at com.android.internal.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:327)
05-05 14:33:01.822: E/AndroidRuntime(1361):     at android.view.View.measure(View.java:16497)
05-05 14:33:01.822: E/AndroidRuntime(1361):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
05-05 14:33:01.822: E/AndroidRuntime(1361):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
05-05 14:33:01.822: E/AndroidRuntime(1361):     at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2291)
05-05 14:33:01.822: E/AndroidRuntime(1361):     at android.view.View.measure(View.java:16497)
05-05 14:33:01.822: E/AndroidRuntime(1361):     at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1916)
05-05 14:33:01.822: E/AndroidRuntime(1361):     at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1113)
05-05 14:33:01.822: E/AndroidRuntime(1361):     at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1295)
05-05 14:33:01.822: E/AndroidRuntime(1361):     at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1000)
05-05 14:33:01.822: E/AndroidRuntime(1361):     at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5670)
05-05 14:33:01.822: E/AndroidRuntime(1361):     at android.view.Choreographer$CallbackRecord.run(Choreographer.java:761)
05-05 14:33:01.822: E/AndroidRuntime(1361):     at android.view.Choreographer.doCallbacks(Choreographer.java:574)
05-05 14:33:01.822: E/AndroidRuntime(1361):     at android.view.Choreographer.doFrame(Choreographer.java:544)
05-05 14:33:01.822: E/AndroidRuntime(1361):     at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:747)
05-05 14:33:01.822: E/AndroidRuntime(1361):     at android.os.Handler.handleCallback(Handler.java:733)
05-05 14:33:01.822: E/AndroidRuntime(1361):     at android.os.Handler.dispatchMessage(Handler.java:95)
05-05 14:33:01.822: E/AndroidRuntime(1361):     at android.os.Looper.loop(Looper.java:136)
05-05 14:33:01.822: E/AndroidRuntime(1361):     at android.app.ActivityThread.main(ActivityThread.java:5017)
05-05 14:33:01.822: E/AndroidRuntime(1361):     at java.lang.reflect.Method.invokeNative(Native Method)
05-05 14:33:01.822: E/AndroidRuntime(1361):     at java.lang.reflect.Method.invoke(Method.java:515)
05-05 14:33:01.822: E/AndroidRuntime(1361):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
05-05 14:33:01.822: E/AndroidRuntime(1361):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
05-05 14:33:01.822: E/AndroidRuntime(1361):     at dalvik.system.NativeStart.main(Native Method)
05-05 14:33:01.822: E/AndroidRuntime(1361): Caused by: java.lang.ClassNotFoundException: Didn't find class "com.rogcg.gridviewexample.SquareImageView" on path: DexPathList[[zip file "/data/app/com.descoper.rom-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.descoper.rom-1, /system/lib]]
05-05 14:33:01.822: E/AndroidRuntime(1361):     at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
05-05 14:33:01.822: E/AndroidRuntime(1361):     at java.lang.ClassLoader.loadClass(ClassLoader.java:497)
05-05 14:33:01.822: E/AndroidRuntime(1361):     at java.lang.ClassLoader.loadClass(ClassLoader.java:457)
05-05 14:33:01.822: E/AndroidRuntime(1361):     at android.view.LayoutInflater.createView(LayoutInflater.java:559)
05-05 14:33:01.822: E/AndroidRuntime(1361):     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
05-05 14:33:01.822: E/AndroidRuntime(1361):     ... 38 more

1 个答案:

答案 0 :(得分:2)

你没有得到NullPointerExeption ......

在尝试引用XML布局文件中的com.rogcg.gridviewexample.SquareImageView时,您会收到ClassNotFoundException。编译器告诉你这个类不存在。确保该类的包名称前缀正确。

相关问题