简体   繁体   English

适用于listview的null异常

[英]null exception with adapter for listview

I am having a problem implementing a custom view with an adapter, the code is not showing any error, but when I run it, it gives me a null point exception. 我在使用适配器实现自定义视图时遇到问题,代码没有显示任何错误,但是当我运行它时,它给了我一个零点异常。

 01-08 12:21:43.949: E/AndroidRuntime(12646): FATAL EXCEPTION: main
 01-08 12:21:43.949: E/AndroidRuntime(12646): java.lang.RuntimeException: Unable to start    activity ComponentInfo{com.jp.blueoceans2/friends.ListFriendsMain}:  java.lang.NullPointerException
 01-08 12:21:43.949: E/AndroidRuntime(12646):   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1816)
 01-08 12:21:43.949: E/AndroidRuntime(12646):   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1837)
 01-08 12:21:43.949: E/AndroidRuntime(12646):   at android.app.ActivityThread.access$1500(ActivityThread.java:132)
 01-08 12:21:43.949: E/AndroidRuntime(12646):   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1033)
 01-08 12:21:43.949: E/AndroidRuntime(12646):   at android.os.Handler.dispatchMessage(Handler.java:99)
 01-08 12:21:43.949: E/AndroidRuntime(12646):   at android.os.Looper.loop(Looper.java:143)
 01-08 12:21:43.949: E/AndroidRuntime(12646):   at android.app.ActivityThread.main(ActivityThread.java:4196)
 01-08 12:21:43.949: E/AndroidRuntime(12646):   at java.lang.reflect.Method.invokeNative(Native Method)
 01-08 12:21:43.949: E/AndroidRuntime(12646):   at java.lang.reflect.Method.invoke(Method.java:507)
 01-08 12:21:43.949: E/AndroidRuntime(12646):   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
 01-08 12:21:43.949: E/AndroidRuntime(12646):   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
 01-08 12:21:43.949: E/AndroidRuntime(12646):   at dalvik.system.NativeStart.main(Native Method)
 01-08 12:21:43.949: E/AndroidRuntime(12646): Caused by: java.lang.NullPointerException
 01-08 12:21:43.949: E/AndroidRuntime(12646):   at friends.ListFriendsMain.onCreate(ListFriendsMain.java:95)
 01-08 12:21:43.949: E/AndroidRuntime(12646):   at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093)
 01-08 12:21:43.949: E/AndroidRuntime(12646):   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1780)
 01-08 12:21:43.949: E/AndroidRuntime(12646):   ... 11 more

the code for the adapter is the follow: 适配器的代码如下:

public class FriendsAdapter extends BaseAdapter{

private Activity activity;
ArrayList<HashMap<String, String>> data;
private static LayoutInflater inflater=null;
public ImageLoader imageLoader; 

public FriendsAdapter (Activity a, ArrayList<HashMap<String, String>> d) {
    activity = a;
    data=d;
    inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    imageLoader=new ImageLoader(activity.getApplicationContext());
}

public int getCount() {
    return data.size();
}

public Object getItem(int position) {
    return position;
}

public long getItemId(int position) {
    return position;
}

public View getView(int position, View convertView, ViewGroup parent) {
    View vi=convertView;
    if(convertView==null)
        vi = inflater.inflate(R.layout.row_friend_cell, null);

    TextView surname_friend = (TextView)vi.findViewById(R.id.surname_friend);
    TextView name_friend = (TextView)vi.findViewById(R.id.name_friend);
    TextView relation = (TextView)vi.findViewById(R.id.relation);
    ImageView avatar = (ImageView)vi.findViewById(R.id.avatar);

    HashMap<String, String> friends = new HashMap<String, String>();
    friends = data.get(position);

    // Setting all values in listview
    surname_friend.setText(friends.get(ListFriendsMain.KEY_SURNAME));
    name_friend.setText(friends.get(ListFriendsMain.KEY_NAME));
    relation.setText(friends.get(ListFriendsMain.KEY_RELATION));
    imageLoader.DisplayImage(friends.get(ListFriendsMain.KEY_AVATAR_URL), avatar);
    return vi;
 }
}

any idea on why I am getting that error? 我为什么会收到这个错误的任何想法?

EDIT 编辑

the main activity code pointed on the error and the information that I used. 主要活动代码指向错误和我使用的信息。

        XMLParser parser = new XMLParser();
    //HashMap<String, String> map = parser.getXmlFromUrl(URL, userid);
    String xml = parser.getXmlFromUrl(URL, userid);
    //Log.v("pictures", "string xml " + xml);
    Document doc = parser.getDomElement(xml); // getting DOM element
    NodeList nl = doc.getElementsByTagName(KEY_FRIEND);

    for (int i = 0; i < nl.getLength(); i++){
        HashMap<String, String> map = new HashMap<String, String>();
        Element e = (Element) nl.item(i);
        // adding each child node to HashMap key value
        map.put(KEY_ID, parser.getValue(e, KEY_ID));
        map.put(KEY_SURNAME, parser.getValue(e, KEY_SURNAME));
        map.put(KEY_NAME, parser.getValue(e, KEY_NAME));
        map.put(KEY_RELATION, parser.getValue(e, KEY_RELATION));
        map.put(KEY_AVATAR_URL, parser.getValue(e, KEY_AVATAR_URL));

        // adding HashList to ArrayList
        info.add(map);
    }

    list=(ListView)findViewById(R.id.list);
    adapter = new FriendsAdapter(this, info);
    list.setAdapter(adapter);

    // Click event for single list row
    list.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {

        }
    });

line 95 specifically refers to this one: 第95行具体指的是这一个:

list.setAdapter(adapter);

The call stack you've shown suggests the bug is somewhere in ListFriendsMain . 您显示的调用堆栈表明该错误位于ListFriendsMain某个ListFriendsMain Specifically, it would help if you show the code at: 具体来说,如果您在以下位置显示代码将会有所帮助:

friends.ListFriendsMain.onCreate(ListFriendsMain.java:95)

Having a look at your code: 看看你的代码:

list=(ListView)findViewById(R.id.list);
adapter = new FriendsAdapter(this, info);
list.setAdapter(adapter);

adapter is definitely not null. 适配器绝对不是null。
Which layout do you use in setContentView()? 你在setContentView()中使用哪种布局?
Make sure that layout has a ListView with an id = list. 确保布局的ListView具有id = list。 It is the only problem I can think of if your trace is correct. 如果您的跟踪正确,这是我能想到的唯一问题。

The problem is in ListFriendsMain class in onCreate() at line number 95 according to this. 根据这个问题,问题ListFriendsMain class in onCreate() ,行号为95 Caused by: java.lang.NullPointerException at friends.ListFriendsMain.onCreate(ListFriendsMain.java:95)

If you can edit your question with your relevant code, there would be chances of having your problem solved exactly. 如果您可以使用相关代码编辑问题,则可能会完全解决您的问题。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM