我无法为名为“lista”的GridView设置适配器。这是我的活动:
public class ListaAmigos extends Activity {
private String TAG = "ListaAmigos";
protected static Context context;
private GridView lista;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.lista_amigos);
context = getApplicationContext();
lista = (GridView) findViewById(R.layout.lista_amigos);
Session session = Session.getActiveSession();
if (session != null && session.isOpened()) {
facebookRequest(session);
}
}
private void facebookRequest(Session session) {
Request friendsRequest = createRequest(session);
RequestAsyncTask requestAsync = new RequestAsyncTask(friendsRequest);
requestAsync.execute();
friendsRequest.setCallback(new Request.Callback() {
@Override
public void onCompleted(Response response) {
List<GraphUser> friends = getResults(response);
ListarAmigosAdapter adapter = new ListarAmigosAdapter(context,
friends);
lista.setAdapter(adapter);
}
});
}
private Request createRequest(Session session) {
Request request = Request.newGraphPathRequest(session, "me/friends",
null);
Set<String> fields = new HashSet<String>();
String[] requiredFields = new String[] { "id", "name",
"picture.type(large)" };
fields.addAll(Arrays.asList(requiredFields));
Bundle parameters = request.getParameters();
parameters.putString("fields", TextUtils.join(",", fields));
request.setParameters(parameters);
return request;
}
private List<GraphUser> getResults(Response response) {
GraphMultiResult multiResult = response
.getGraphObjectAs(GraphMultiResult.class);
GraphObjectList<GraphObject> data = multiResult.getData();
return data.castToListOf(GraphUser.class);
}
}
我的适配器:
public class ListarAmigosAdapter extends BaseAdapter {
private List<GraphUser> friends;
private BitmapLruCache imageCache;
private Context context;
public ListarAmigosAdapter(Context context, List<GraphUser> friends) {
this.friends = friends;
this.context = context;
imageCache = new BitmapLruCache();
}
public int getCount() {
return friends.size();
}
public GraphUser getItem(int position) {
return friends.get(position);
}
public long getItemId(int position) {
return Long.parseLong(friends.get(position).getId());
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View itemView = convertView;
ViewHolder holder = null;
if (convertView == null) {
LayoutInflater inflater = LayoutInflater.from(ListaAmigos.context);
convertView = inflater.inflate(R.layout.un_amigo, null);
holder = new ViewHolder();
holder.mRequestQueue = Volley.newRequestQueue(ListaAmigos.context);
holder.imageLoader = new ImageLoader(holder.mRequestQueue,
imageCache);
holder.position = position;
holder.foto = (NetworkImageView) convertView
.findViewById(R.id.imagen);
holder.nombre = (TextView) convertView.findViewById(R.id.nombre);
convertView.setTag(holder);
}
JSONObject friendsJSON = friends.get(position).getInnerJSONObject();
try {
holder.nombre.setText(friendsJSON.getString("name"));
} catch (JSONException e) {
Log.d("JSON error " + e.getMessage(), "ERROR JSON");
}
return itemView;
}
static class ViewHolder {
ImageLoader imageLoader;
RequestQueue mRequestQueue;
NetworkImageView foto;
TextView nombre;
int position;
}
}
错误:
02-18 19:27:02.561: E/AndroidRuntime(25109): FATAL EXCEPTION: main
02-18 19:27:02.561: E/AndroidRuntime(25109): java.lang.NullPointerException
02-18 19:27:02.561: E/AndroidRuntime(25109): at com.ardroid.fav.lista_amigos.ListaAmigos$1.onCompleted(ListaAmigos.java:59)
02-18 19:27:02.561: E/AndroidRuntime(25109): at com.facebook.Request$4.run(Request.java:1669)
02-18 19:27:02.561: E/AndroidRuntime(25109): at android.os.Handler.handleCallback(Handler.java:615)
02-18 19:27:02.561: E/AndroidRuntime(25109): at android.os.Handler.dispatchMessage(Handler.java:92)
02-18 19:27:02.561: E/AndroidRuntime(25109): at android.os.Looper.loop(Looper.java:137)
02-18 19:27:02.561: E/AndroidRuntime(25109): at android.app.ActivityThread.main(ActivityThread.java:4867)
02-18 19:27:02.561: E/AndroidRuntime(25109): at java.lang.reflect.Method.invokeNative(Native Method)
02-18 19:27:02.561: E/AndroidRuntime(25109): at java.lang.reflect.Method.invoke(Method.java:511)
02-18 19:27:02.561: E/AndroidRuntime(25109): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1007)
02-18 19:27:02.561: E/AndroidRuntime(25109): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:774)
02-18 19:27:02.561: E/AndroidRuntime(25109): at dalvik.system.NativeStart.main(Native Method)
答案 0 :(得分:1)
您无法为列表视图设置适配器,因为在您执行此操作时它是null
。这就是你的堆栈跟踪中的NullPointerException
。
所以这里lista == null:
lista.setAdapter(adapter);
此时您应该查看它为空的原因。看起来原因就在这里
lista = (GridView) findViewById(R.layout.lista_amigos);
您正在查找R.layout
,但您想要的是ìd
视图,如下所示:
lista = (GridView) findViewById(R.id.lista_amigos);
或视图的ID。请记住,只要找不到ID, findViewById 就会返回null。