2013-01-13 41 views
0

我想实现一个ListView与测试值。它应该显示每个列表元素2个字符串。但是我得到一个NullPointerException。ListView和NullPoinerException,我不明白

我有一个ListActivity,调用一个适配器。如果我评论此活动的最后一行,我没有任何错误,所以我想我的适配器有错误。但是我在网上搜索了解决方案,不幸的是,由于Java(和OOP)技术非常低,我无法解决我的问题。你能告诉我我疯了吗?

public class ListActivity extends Activity { 

//private final String TAG = ListActivity.class.getSimpleName(); 
private ListView listMessView; 

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

    List<Message> listMessages = new ArrayList<Message>(); 
    listMessages.add(new Message("London", "aze")); 
    listMessages.add(new Message("Rome", "azeeaze")); 
    listMessages.add(new Message("Paris", "qsdqsdqsd")); 

    listMessView = (ListView) findViewById(R.id.message_list); 
    listMessView.setAdapter(new ListAdaptater(this, R.layout.list_row, listMessages)); 
    } 
} 


public class ListAdaptater extends ArrayAdapter<Message>{ 

    private int resource; 
    private LayoutInflater inflater; 
    private Context context; 

    public ListAdaptater (Context ctx, int resourceId, List<Message> objects) { 

     super(ctx, resourceId, objects); 
     resource = resourceId; 
     inflater = LayoutInflater.from(context); 
     context=ctx; 
    } 

    @Override 
    public View getView (int position, View convertView, ViewGroup parent) { 

     convertView = (RelativeLayout) inflater.inflate(resource, null); 

     Message message = (Message) getItem(position); 

     TextView txtName = (TextView) convertView.findViewById(R.id.user_name); 
     txtName.setText(message.getUserName()); 

     TextView txtMsg = (TextView) convertView.findViewById(R.id.message); 
     txtMsg.setText(message.getMessage()); 

     return convertView; 
    } 
    } 

回答

1

字段context在其初始化之前使用。尝试使用:

public ListAdaptater (Context ctx, int resourceId, List<Message> objects) { 

     super(ctx, resourceId, objects); 
     resource = resourceId; 
     inflater = LayoutInflater.from(ctx); 
     context=ctx; 
    } 
+0

是的,就是这样。愚蠢的是,我甚至没有检查。谢谢 ! – LocoCo