I am trying to implement a ListView with test values. It should display 2 strings per list element. But i get a NullPointerException.
I have a ListActivity, calling an Adapter. If I comment the last line of this activity, I don’t have any error so I guess that my adaptator has something wrong. But I have searched solutions on the Web, and unfortunatelly, I cannot solve my problem due to a very low Java (and OOP) skill. Can you please tell me where I mad a mistake ?
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;
}
}
The field
contextis used before it’s initialized. Try using this: