2016-09-06 22 views
1

我已經responsed JSONObject從API和我試着用二傳手發送到模塊的響應,那麼到Recyclerview適配器,但它不工作如何將JSON值從Fragment發送到模塊?

這是我的片段

public class ListViewActivityFragment extends Fragment { 
List<AppShowModule> appShowModule; 
RecyclerView AppRecyclerView; 
List<AppShowModule> GetDataAdapter1; 


RecyclerView.LayoutManager AppRecyclerViewlayoutManager; 
RecyclerView.Adapter AppRecyclerViewadapter; 
String jsonUrl = "https://itunes.apple.com/jo/rss/topfreeapplications/limit=50/json"; 
TextView text; 
Context context; 
RequestQueue requestQueue; 
public ListViewActivityFragment() { 
} 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) { 
    return inflater.inflate(R.layout.fragment_list_view, container, false); 
} 
@Override 
public void onActivityCreated(@Nullable Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 
    appShowModule = new ArrayList<>(); 
    AppRecyclerView = (RecyclerView) getView().findViewById(R.id.AppRecyclerView); 
    text = (TextView) getView().findViewById(R.id.textView2); 
    AppRecyclerView.setHasFixedSize(true); 
    GetDataAdapter1 = new ArrayList<>(); 
    AppRecyclerView.setLayoutManager(AppRecyclerViewlayoutManager); 
    JsonAppShowData();} 

public void JsonAppShowData() { 
    final JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(jsonUrl, new Response.Listener<JSONObject>() { 
     @Override 
     public void onResponse(JSONObject response) { 
      try { 
       JSONArray jsonArray = response.getJSONObject("feed").getJSONArray("entry"); 
       for (int i = 0; i < jsonArray.length(); i++) { 
        JSONObject json1 = jsonArray.getJSONObject(i).getJSONObject("im:name"); 
        AppShowModule appShowModule111 = new AppShowModule(); 
        String name = response.getJSONObject("feed").getJSONArray("entry").getJSONObject(i).getJSONObject("im:name").getString("label").toString(); 
        text.setText(name); 
        appShowModule111.setAppName((name));} 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      }} 
    }, new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 
      Log.e("LOG", error.toString()); 
     } 
    }); 
    requestQueue = Volley.newRequestQueue(getContext()); 
    requestQueue.add(jsonObjectRequest); 
    AppRecyclerView.setLayoutManager(new LinearLayoutManager(context)); 
    AppRecyclerViewadapter = new RecyclerViewAdapter(GetDataAdapter1,this); 
    AppRecyclerView.setAdapter(AppRecyclerViewadapter); 
} 
} 

,這是我的適配器

public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder> { 

Context context; 

List<AppShowModule> getDataAdapter; 
Context MContext; 


public RecyclerViewAdapter(List<AppShowModule> getDataAdapter, ListViewActivityFragment context){ 

    super(); 

    this.getDataAdapter = getDataAdapter; 

} 

@Override 
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 

    View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.appitem, parent, false); 

    ViewHolder viewHolder = new ViewHolder(v); 

    return viewHolder; 
} 



@Override 


public void onBindViewHolder(final ViewHolder holder, int position) 

{ 
    final AppShowModule getDataAdapter1 = getDataAdapter.get(position); 
    holder.NameTextView.setText(getDataAdapter1.getAppName()); 
    Picasso.with(context).load(getDataAdapter1.getAppImageUrl()).into(holder.imgPost); 

} 
@Override 
public int getItemCount() { 

    return getDataAdapter.size(); 
} 


class ViewHolder extends RecyclerView.ViewHolder{ 

    public TextView NameTextView; 
    public ImageView imgPost; 
    LinearLayout lnrLayout; 


    public ViewHolder(View itemView) { 

     super(itemView); 


     NameTextView = (TextView) itemView.findViewById(R.id.appName); 
     imgPost = (ImageView) itemView.findViewById(R.id.appImage); 
     lnrLayout = (LinearLayout)itemView.findViewById(R.id.lnrLayout); 





    } 


    } 
    } 

,這是我的模塊

public class AppShowModule 
{ 
    private String appName; 
    private String appImageUrl; 
    public String getAppName() { 
     return appName;} 
    public void setAppName(String appName) { 
     this.appName = appName;} 
public String getAppImageUrl() { 
    return appImageUrl;} 
public void setAppImageUrl(String appImageUrl) { 
    this.appImageUrl = appImageUrl;} 
    } 

回答

0

喲正在創建AppShowModule appShowModule111 = new AppShowModule();對象,但你永遠不會使用該對象填充你的adaapter。你的JsonObjectRequest onResponse()應該看起來像這樣;

@Override 
    public void onResponse(JSONObject response) { 
     try { 
      JSONArray jsonArray = response.getJSONObject("feed").getJSONArray("entry"); 
      for (int i = 0; i < jsonArray.length(); i++) { 
       JSONObject json1 = jsonArray.getJSONObject(i).getJSONObject("im:name"); 
       AppShowModule appShowModule111 = new AppShowModule(); 
       String name = response.getJSONObject("feed").getJSONArray("entry").getJSONObject(i).getJSONObject("im:name").getString("label").toString(); 
       text.setText(name); 
       appShowModule111.setAppName((name)); 
       GetDataAdapter1.add(appShowModule111); 
      } 
      AppRecyclerViewadapter = new RecyclerViewAdapter(GetDataAdapter1,ListViewActivityFragment.this); 
      AppRecyclerView.setAdapter(AppRecyclerViewadapter); 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     }} 
+0

謝謝但(GetDataAdapter1,this)不能應用! –

+0

嘗試AppRecyclerViewadapter = new RecyclerViewAdapter(GetDataAdapter1,ListViewActivityFragment.this); –

+0

非常感謝你的工作,但現在在回收視圖中只有一個項目是顯示,但我有一個50!爲什麼這隻顯示一個? –

相關問題