1

这是我的代码:

package com.example.whs;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.app.ActionBar;
import android.app.ListActivity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.GridView;

public class ViewAlbum extends ListActivity {
    // Progress Dialog
    private ProgressDialog pDialog;

    // Creating JSON Parser object
    JSONParser fotoJParser = new JSONParser();

    // Array for the list
    ArrayList<HashMap<String, String>> photoList;

    // JSON variables
    public static final String TAG_SUCCESS = "success";
    public static final String TAG_MESSAGE = "message"; 

    //JSON array
    JSONArray items = null;

    GridView grid;

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

        // Set actionbar
        ActionBar actionBar = getActionBar();
        actionBar.setDisplayHomeAsUpEnabled(true);

        // HashMap for the items
        photoList = new ArrayList<HashMap<String, String>>();

        GridView grid = (GridView) findViewById(R.id.grid);;

        // Loading the items on the background
        new LoadAllItems().execute();       
    }

    // class for loading all items
    class LoadAllItems extends AsyncTask<String, String, String> {
        private static final String TAG_ID = "id";
        private static final String TAG_ITEMS = "items";
        public String TAG_NAME = "name";


        // Before 
        @Override
        protected void onPreExecute(){
            super.onPreExecute();
            pDialog = new ProgressDialog(ViewAlbum.this);
            pDialog.setMessage("Foto's laden...");
            pDialog.setIndeterminate(false);
            pDialog.setCancelable(false);
            pDialog.show();
        }

        // Get the products     
        @Override
        protected String doInBackground(String... params) {
            // Build Parameters
            List<NameValuePair> params1 = new ArrayList<NameValuePair>();

            // get the id
            Intent intent = getIntent();
            String id = intent.getStringExtra(TAG_ID);

            params1.add(new BasicNameValuePair("id", id));

            // url to get the items
            String url_foto = "<here is my url>";

            //Get the JSON string           
            JSONObject json = fotoJParser.makeHttpRequest(url_foto, "POST", params1);

            try {
                // check for success tag
                int success = json.getInt(TAG_SUCCESS);

                if(success == 1) {
                    // found the items
                    items = json.getJSONArray(TAG_ITEMS);

                    // loop through the items
                    for (int i = 0; items.length() > i; i++){
                        // Get the item in variable c
                        JSONObject s = items.getJSONObject(i);

                        // Store in a variable
                        String name = s.getString(TAG_NAME);

                        // Create the HashMap
                        HashMap<String, String> map = new HashMap<String, String>();

                        // add it
                        map.put(TAG_NAME, name);

                        // to arraylist
                        photoList.add(map);                     
                    }
                }else{
                    //
                }
            } catch (JSONException e){
                throw new RuntimeException(e);
            }
            return null;
        }       


        protected void onPostExecute(String result){
            // dismiss dialog
            pDialog.dismiss();      
            // Add adapter to the list
            ViewAlbumAdapter adapter = new ViewAlbumAdapter(ViewAlbum.this, photoList);
            grid.setAdapter(adapter);
            grid.setOnItemClickListener(new OnItemClickListener(){
                public void onItemClick(AdapterView<?> a, View v,
                        int position, long id) {
                // do something
                }
            });
        }
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        return false;
        // to do
    }

}

问题是他找不到gridview。网格视图的 id 是android:id="@+id/grid". 日志在带有grid.setAdapter(adapter). 错误是java.lang.NullPointerException

我试过在getActivity()前面加findViewById,但是他不认识getActivity()方法。

4

1 回答 1

1

取出变量阴影:

GridView grid = (GridView) findViewById(R.id.grid);;

应该

grid = (GridView) findViewById(R.id.grid);

您已经声明grid为实例变量。通过在 中再次重新声明它onCreate(),您将实例保留为grid空。

于 2013-03-03T22:44:55.237 回答