2015-09-11 68 views
0

请帮助,我试图从FaceBook中检索也使用应用程序的朋友列表。我正在获取该列表并显示了数据,但我的适配器不会膨胀列表视图。所有的ID都是正确的,Log标签显示我需要什么,但视图不会膨胀。下面是相关代码:列表视图不会膨胀

查看适配器:

package com.example.sca.ihavebeen; 

import android.content.Context; 
import android.util.Log; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.Adapter; 
import android.widget.ArrayAdapter; 
import android.widget.ImageView; 
import android.widget.TextView; 

import org.json.JSONArray; 

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

/** 
* Created by Tom Schinler on 9/10/2015. 
*/ 
public class FriendsViewAdapter extends ArrayAdapter<FaceBookFriends> { 
    public FriendsViewAdapter(Context context, JSONArray friends) { 
     super(context,0); 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent){ 
     FaceBookFriends friend = getItem(position); 

     if (convertView == null) { 
      convertView = LayoutInflater.from(getContext()).inflate(R.layout.fb_friends_layout, parent); 
     } 
     TextView fbName = (TextView)convertView.findViewById(R.id.fbName); 
     ImageView fbPic = (ImageView)convertView.findViewById(R.id.fbPic); // Not yet ready to handle this 
     fbName.setText(friend.name); 


     return convertView; 
    } 
} 

这里是清单应在膨胀的观点:

package com.example.sca.ihavebeen; 

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.util.Log; 
import android.widget.ListView; 

import com.facebook.AccessToken; 
import com.facebook.GraphRequest; 
import com.facebook.GraphResponse; 

import org.json.JSONArray; 
import org.json.JSONException; 
import org.json.JSONObject; 

import java.util.ArrayList; 

public class GameStart extends AppCompatActivity { 

    JSONArray mArrayofFriends; 

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



     mArrayofFriends = FaceBookFriends.getFriendsList(); 


     Log.v("maybe ", String.valueOf(mArrayofFriends)); 

     populateFbFriendsList(); 

    } 

    private void populateFbFriendsList() { 

     FriendsViewAdapter adapter = new FriendsViewAdapter(this, mArrayofFriends); 

     ListView listView = (ListView) findViewById(R.id.fbFriendsListView); 
     listView.setAdapter(adapter); 
    } 




} 

,只是为了好玩,这里是类调用图形响应:

package com.example.sca.ihavebeen; 

import android.util.Log; 

import com.facebook.AccessToken; 
import com.facebook.GraphRequest; 
import com.facebook.GraphResponse; 

import org.json.JSONArray; 

/** 
* Created by Tom Schinler on 8/4/2015. 
*/ 
public class FaceBookFriends { 




    public static JSONArray mFriendsList; 
    public String name; 
    public String id; 




    public static JSONArray getFaceBookFriends() { 
     AccessToken accessToken = AccessToken.getCurrentAccessToken(); 
     GraphRequest request = GraphRequest.newMyFriendsRequest(
       accessToken, 
       new GraphRequest.GraphJSONArrayCallback() { 
        @Override 
        public void onCompleted(JSONArray array, GraphResponse response) { 
         // Insert your code here 

         mFriendsList = array; 
         Log.v("Array: ", String.valueOf(mFriendsList)); 
         Log.v("Facebook response: ", String.valueOf(response)); 

        } 
       }); 

     request.executeAsync(); 




     return mFriendsList; 

    } 

    public static JSONArray getFriendsList() { 
     return mFriendsList; 
    } 

    public FaceBookFriends(String name, String id){ 
     this.name = name; 
     this.id = id; 
    } 

} 

请帮我找出这个问题!

回答

0

您使用的ArrayAdapter<FaceBookFriends>没有设置一个数组:

public FriendsViewAdapter(Context context, JSONArray friends) { 
    super(context,0); 
} 

相反,你应该Convert Json Array to normal Java Array或更精确List<FaceBookFriends>,并设置它的构造函数中:

public FriendsViewAdapter(Context context, JSONArray friends) { 
    super(context,0,convertJSONArray2List(friends)); 
} 
+0

我明白这一点了这么多,我在构造函数中设置转换方法,就像你展示的那样,然后创建方法就像你链接的方法一样,但是现在我在'listView.setAdapter(adapter);'得到一个空指针异常,并且看起来该适配器不是得到一个rray。 Log.v显示正在进行转换,并将数据显示在logcat中,但未被转换。我知道我失去的将是愚蠢而明显的,但我正在挣扎。 –

+0

我想通了。再次感谢您的帮助! –

+0

现在我卡住了。在数组列表中,作为一个包含2个键值对的数组,例如:[{“id”:“10207092696420407”,“name”:“Gina Schinler”}],我需要访问这些键值对并将它们插入到我的视图中。当我尝试这个时,视图充满了两个键值对,就好像它们都是一个字符串。 –

0

您可能需要重写getCount以使您的列表知道实际在适配器中有多少个对象。否则它不会放置任何东西。