这是我的代码:
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()方法。