首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ListActivity抛出NullPointerException

ListActivity抛出NullPointerException
EN

Stack Overflow用户
提问于 2009-12-28 14:15:14
回答 1查看 1.7K关注 0票数 0

嘿伙计们我有个ListActivity..。非常简单的.它一直抛出NullPointer异常,尽管我已经做了与示例List7完全相同的操作,只是我使用了布局充气…下面是代码..。你能在这里评论一下我做的错误吗??

代码语言:javascript
复制
import java.util.Vector;

import android.app.Activity;
import android.app.ListActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.AdapterView.OnItemSelectedListener;

public class CustomList extends ListActivity implements OnItemSelectedListener{
    Vector<String> VTitle;
    Vector<String> VDescription;
    TextView display;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        VTitle.addElement("First Title");
        VTitle.addElement("Second Title");
        VTitle.addElement("Third Title");
        VTitle.addElement("Fourth Title");
        VDescription.addElement("1 Description");
        VDescription.addElement("2 Description");
        VDescription.addElement("3 Description");
        VDescription.addElement("4 Description");
        display = (TextView)findViewById(R.id.display);
        setListAdapter(new CustomAdapter(this));
    }     
    @Override
    protected void onListItemClick(ListView l, View v, int position, long id) {
        // TODO Auto-generated method stub
        display.setText(VTitle.elementAt(position));
    }

    class CustomAdapter extends BaseAdapter {
        protected Activity mContext;

        public CustomAdapter(Activity context) {
            mContext = context;
            // TODO Auto-generated constructor stub
        }

        @Override
        public int getCount() {
            // TODO Auto-generated method stub
            return VTitle.size();
        }

        @Override
        public Object getItem(int position) {
            // TODO Auto-generated method stub
            return position;
        }

        @Override
        public long getItemId(int position) {
            // TODO Auto-generated method stub
            return position;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            // TODO Auto-generated method stub
            View row = convertView;
            if(row==null) {
                LayoutInflater inflater = mContext.getLayoutInflater();
                row = inflater.inflate(R.layout.row,null);
            }
            TextView title = (TextView)row.findViewById(R.id.title);
            title.setText(VTitle.elementAt(position));
            TextView description = (TextView)row.findViewById(R.id.description);
            description.setText(VDescription.elementAt(position));
            ImageView image = (ImageView)row.findViewById(R.id.image);
            switch(position){
                case 0:
                    image.setImageResource(R.drawable.check);
                    break;
                case 1:
                    image.setImageResource(R.drawable.dos);
                    break;
                case 2:
                    image.setImageResource(R.drawable.smily);
                    break;
                case 3:
                    image.setImageResource(R.drawable.wrong);
                    break;
            }
            return(row);
        }
    }

    @Override
    public void onItemSelected(AdapterView parent, View v, int position, long id) {
        // TODO Auto-generated method stub
        display.setText(VTitle.elementAt(position));
    }

    @Override
    public void onNothingSelected(AdapterView<?> arg0) {
        // TODO Auto-generated method stub
    }
}

xmls是这样的……

"main.xml“

代码语言:javascript
复制
<?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:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:id = "@+id/display"
        android:text="something"
        />
    <ListView 
         android:id="@android:id/list" 
         android:layout_width="fill_parent" 
         android:drawSelectorOnTop="false" 
        android:layout_height="0px">
    </ListView>
</LinearLayout>

"row.xml“

代码语言:javascript
复制
<?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">
    <ImageView 
        android:id="@+id/image" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content">    
    </ImageView>
    <TextView 
        android:text="Title" 
        android:id="@+id/title" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content">
    </TextView>
    <TextView 
        android:text="description" 
        android:id="@+id/description" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content">
    </TextView>
</LinearLayout>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-12-28 16:00:50

VTitleVDescription未初始化

在访问这些属性之一之前,您应该:

代码语言:javascript
复制
VTitle = new Vector<String>();
VDescription = new Vector<String>();

此外,在java中,属性名的第一个字母应该是小写,而在android中,第一个字母应该是m,以表示成员字段。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1968194

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档