Note that there are some explanatory texts on larger screens.

plurals
  1. PONullpointerexception in displaying image from json url Android
    primarykey
    data
    text
    <p>So here's the code I'm working on:</p> <pre><code>public class MainActivity extends ListActivity { // url to make request private static String url = "http://alyssayango.x10.mx/"; private static final String TAG_TYPE = "movie_type"; private static final String TAG_NAME = "movie_name"; private static final String TAG_LENGTH = "movie_length"; private static final String TAG_SCHEDULES = "movie_schedules"; private static final String TAG_CINEMA = "movie_cinema_number"; private static final String TAG_URL = "movie_image_url"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); MyTask task = new MyTask(MainActivity.this); task.execute(url); } public String readMovieSchedules(String url) { StringBuilder builder = new StringBuilder(); HttpClient client = new DefaultHttpClient(); HttpGet httpGet = new HttpGet(url); try { HttpResponse response = client.execute(httpGet); StatusLine statusLine = response.getStatusLine(); int statusCode = statusLine.getStatusCode(); if (statusCode == 200) { HttpEntity entity = response.getEntity(); InputStream content = entity.getContent(); BufferedReader reader = new BufferedReader(new InputStreamReader(content)); String line; while ((line = reader.readLine()) != null) { builder.append(line); } } else { Log.e(MainActivity.class.toString(), "Failed to download file"); } } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return builder.toString(); } private class MyTask extends AsyncTask&lt;String, Void, String&gt;{ private ProgressDialog pd; public MainActivity activity; public MyTask(MainActivity a) { activity = a; } @Override protected String doInBackground(String... urls) { String stringtoparse=null; for (String url : urls) { stringtoparse = readMovieSchedules(url); // getting XML from URL } return stringtoparse; } @Override protected void onPreExecute() { // TODO Auto-generated method stub pd = new ProgressDialog(MainActivity.this); pd.setTitle("Downloading..."); pd.setMessage("Please wait."); pd.setCancelable(false); pd.setIndeterminate(true); pd.show(); super.onPreExecute(); } @Override protected void onPostExecute(String readMovieSchedules) { // Hashmap for ListView ArrayList&lt;HashMap&lt;String, String&gt;&gt; movieList = new ArrayList&lt;HashMap&lt;String, String&gt;&gt;(); JSONArray jsonArray; try { jsonArray = new JSONArray(readMovieSchedules); Log.i(MainActivity.class.getName(), "Number of entries " + jsonArray.length()); for (int i = 0; i &lt; jsonArray.length(); i++) { JSONObject jsonObject = jsonArray.getJSONObject(i); Log.i(MainActivity.class.getName(), jsonObject.getString("movie_name")); // Storing each json item in variable String name = jsonObject.getString(TAG_NAME); String type = jsonObject.getString(TAG_TYPE); String length = jsonObject.getString(TAG_LENGTH); String cinema = jsonObject.getString(TAG_CINEMA); String schedules = jsonObject.getString(TAG_SCHEDULES); String url = jsonObject.getString(TAG_URL); // creating new HashMap HashMap&lt;String, String&gt; map = new HashMap&lt;String, String&gt;(); // adding each child node to HashMap key =&gt; value map.put(TAG_NAME, name); map.put(TAG_TYPE, type); map.put(TAG_LENGTH, length); map.put(TAG_CINEMA, cinema); map.put(TAG_SCHEDULES, schedules); map.put(TAG_URL, url); // adding HashList to ArrayList movieList.add(map); /** * Updating parsed JSON data into ListView * */ THIS IS LINE 178 ListAdapter adapter = new CustomAdapter(MainActivity.this, movieList, R.layout.list_item, new String[] { TAG_NAME, TAG_CINEMA, TAG_SCHEDULES, TAG_URL }, new int[] { R.id.name, R.id.cinema, R.id.schedules, R.id.image }); setListAdapter(adapter); // selecting single ListView item ListView lv = getListView(); // Launching new screen on Selecting Single ListItem lv.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView&lt;?&gt; parent, View view, int position, long id) { // getting values from selected ListItem String name = ((TextView) view.findViewById(R.id.name)).getText().toString(); String cost = ((TextView) view.findViewById(R.id.cinema)).getText().toString(); String description = ((TextView) view.findViewById(R.id.schedules)).getText().toString(); String url = ((TextView) view.findViewById(R.id.image_)).getText().toString(); // Starting new intent Intent in = new Intent(getApplicationContext(), SingleMenuItemActivity.class); in.putExtra(TAG_NAME, name); in.putExtra(TAG_CINEMA, cost); in.putExtra(TAG_SCHEDULES, description); in.putExtra(TAG_URL, url); startActivity(in); } }); } } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } pd.dismiss(); super.onPostExecute(readMovieSchedules); } } private class CustomAdapter extends SimpleAdapter { public ImageLoader imageLoader; public LayoutInflater inflater = null; private Activity activity; private Context mContext; private URL url; private Bitmap bmp; public CustomAdapter(Context context, List&lt;? extends Map&lt;String, ?&gt;&gt; data, int resource, String[] from, int[] to) { super(context, data, resource, from, to); mContext = context; inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); THIS IS LINE 238 imageLoader = new ImageLoader(activity.getApplicationContext()); } @Override public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) { convertView = getLayoutInflater().inflate(R.layout.list_item, null); } HashMap&lt;String, Object&gt; data = (HashMap&lt;String, Object&gt;) getItem(position); TextView name = (TextView) convertView.findViewById(R.id.name); TextView cinema = (TextView) convertView.findViewById(R.id.cinema); TextView schedules = (TextView) convertView.findViewById(R.id.schedules); ImageView image = (ImageView) convertView.findViewById(R.id.image); String nameString = (String) data.get(TAG_NAME); String cinemaString = (String) data.get(TAG_CINEMA); String schedulesString = (String) data.get(TAG_SCHEDULES); String imageURL = (String) data.get(TAG_URL); name.setText(nameString); cinema.setText(cinemaString); schedules.setText(schedulesString); try { URL newURL = new URL(imageURL); bmp = BitmapFactory.decodeStream(newURL.openConnection().getInputStream()); image.setImageBitmap(bmp); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } imageLoader.DisplayImage(imageURL, (Activity)mContext, image); return convertView; } } } </code></pre> <p>I'm having an error/NullPointerException in these lines:</p> <pre><code> ListAdapter adapter = new CustomAdapter(MainActivity.this, movieList, R.layout.list_item, new String[] { TAG_NAME, TAG_CINEMA, TAG_SCHEDULES, TAG_URL }, new int[] { R.id.name, R.id.cinema, R.id.schedules, R.id.image }); </code></pre> <p>What is the thing that I'm missing in here? Any help is much appreciated. Thanks.</p> <p>UPDATED the Log FILE:</p> <pre><code> 07-25 10:39:58.564: E/AndroidRuntime(971): FATAL EXCEPTION: main 07-25 10:39:58.564: E/AndroidRuntime(971): java.lang.NullPointerException 07-25 10:39:58.564: E/AndroidRuntime(971): at com.say.stalucia.MainActivity$CustomAdapter.&lt;init&gt;(MainActivity.java:238) 07-25 10:39:58.564: E/AndroidRuntime(971): at com.say.stalucia.MainActivity$MyTask.onPostExecute(MainActivity.java:178) 07-25 10:39:58.564: E/AndroidRuntime(971): at com.say.stalucia.MainActivity$MyTask.onPostExecute(MainActivity.java:1) 07-25 10:39:58.564: E/AndroidRuntime(971): at android.os.AsyncTask.finish(AsyncTask.java:631) 07-25 10:39:58.564: E/AndroidRuntime(971): at android.os.AsyncTask.access$600(AsyncTask.java:177) 07-25 10:39:58.564: E/AndroidRuntime(971): at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644) </code></pre> <p>Line 238:</p> <pre><code> imageLoader = new ImageLoader(activity.getApplicationContext()); </code></pre> <p>Line 178:</p> <pre><code> ListAdapter adapter = new CustomAdapter(MainActivity.this, movieList, </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload