2016-08-23 20 views
-1

這是我的Adapter類。我無法從我從服務中獲得的json解析圖像。我無法解析從服務獲取的json圖像到回收視圖

RecyclerViewAdapter.class

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

Context context; 

List<GetDataAdapter> getDataAdapter; 
ImageView imgPost; 

public RecyclerViewAdapter(List<GetDataAdapter> getDataAdapter, Context context){ 
    super(); 

    this.getDataAdapter = getDataAdapter; 
    this.context = context; 

} 

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

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

    ViewHolder viewHolder = new ViewHolder(v); 
    return viewHolder; 
} 

@Override 
public void onBindViewHolder(ViewHolder holder, int position) { 

    GetDataAdapter getDataAdapter1 = getDataAdapter.get(position); 
    holder.NameTextView.setText(getDataAdapter1.getName()); 
    holder.SubjectTextView.setText(getDataAdapter1.getSubject()); 
} 

@Override 
public int getItemCount() { 
    return getDataAdapter.size(); 
} 

class ViewHolder extends RecyclerView.ViewHolder{ 

    public TextView NameTextView; 
    public TextView SubjectTextView; 
    ImageView imgPost; 

    public ViewHolder(View itemView) { 

     super(itemView); 
     NameTextView = (TextView) itemView.findViewById(R.id.txtPostTitle) ; 

     SubjectTextView = (TextView) itemView.findViewById(R.id.txtPostDate) ; 
     imgPost = (ImageView) itemView.findViewById(R.id.imgPost); 

     } 
    } 
} 

,這是我的模型類。

GetDataAdapter.class

public class GetDataAdapter { 

    private String name; 
    private String imageUrl; 
    private String subject; 

public void setname(String name) { 
    this.name = name; 
} 

public void setSubject(String subject) { 
    this.subject = subject; 
} 

public void setImageUrl(String imageUrl) { 
    this.imageUrl = imageUrl; 
} 

public String getName() { 
    return name; 
} 

public String getSubject() { 
    return subject; 
} 

public String getImageUrl() { 
    return imageUrl; 
} 
} 

這是我的MainActivity類別。

MainActivity.class

public class MainActivity extends AppCompatActivity { 

    List<GetDataAdapter> GetDataAdapter1; 

    RecyclerView recyclerView; 
RecyclerView.LayoutManager recyclerViewlayoutManager; 
RecyclerView.Adapter recyclerViewadapter; 

ProgressBar progressBar; 
String GET_JSON_DATA_HTTP_URL = "http://api.androidhive.info/json/movies.json"; 

String JSON_NAME = "title"; 
String JSON_SUBJECT = "releaseYear"; 
String JSON_IMAGE = "image"; 

Button button; 

JsonArrayRequest jsonArrayRequest ; 
RequestQueue requestQueue ; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.activity_main); 
    GetDataAdapter1 = new ArrayList<>(); 

    recyclerView = (RecyclerView) findViewById(R.id.recyclerView1); 
    progressBar = (ProgressBar) findViewById(R.id.progressBar1); 

    button = (Button)findViewById(R.id.button) ; 
    recyclerView.setHasFixedSize(true); 

    recyclerViewlayoutManager = new LinearLayoutManager(this); 
    recyclerView.setLayoutManager(recyclerViewlayoutManager); 

    button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      progressBar.setVisibility(View.VISIBLE); 
      JSON_DATA_WEB_CALL(); 
     } 
    }); 
} 

public void JSON_DATA_WEB_CALL(){ 

    jsonArrayRequest = new JsonArrayRequest(GET_JSON_DATA_HTTP_URL, 

      new Response.Listener<JSONArray>() { 
       @Override 
       public void onResponse(JSONArray response) { 
        progressBar.setVisibility(View.GONE); 
        JSON_PARSE_DATA_AFTER_WEBCALL(response); 
       } 
      }, 
      new Response.ErrorListener() { 
       @Override 
       public void onErrorResponse(VolleyError error) { 

       } 
      }); 

    requestQueue = Volley.newRequestQueue(this); 
    requestQueue.add(jsonArrayRequest); 
} 

public void JSON_PARSE_DATA_AFTER_WEBCALL(JSONArray array){ 

    for(int i = 0; i<array.length(); i++) { 

     GetDataAdapter GetDataAdapter2 = new GetDataAdapter(); 

     JSONObject json = null; 
     try { 
      json = array.getJSONObject(i); 
      GetDataAdapter2.setname(json.getString(JSON_NAME)); 
      GetDataAdapter2.setSubject(json.getString(JSON_SUBJECT)); 
      GetDataAdapter2.setImageUrl(json.getString(JSON_IMAGE)); 
     } catch (JSONException e) { 

      e.printStackTrace(); 
     } 
     GetDataAdapter1.add(GetDataAdapter2); 
    } 

    recyclerViewadapter = new RecyclerViewAdapter(GetDataAdapter1, this); 
    recyclerView.setAdapter(recyclerViewadapter); 
} 
} 
+0

爲什麼無法加載圖像好的庫?你會得到什麼錯誤?請具體說明您遇到的問題。 – jHilscher

+0

我沒有任何錯誤,但圖像不顯示 –

回答

2

您沒有添加任何代碼在你RecyclerViewAdapter.class從URL加載圖像。嘗試以下步驟:

1)如果你已經在你的AndroidManifest.xml中添加Internet權限

<使用許可權的Android首次檢查:NAME = 「android.permission.INTERNET對」/ >

2 )我建議使用Square的Picasso Library從url加載圖像。檢查
它在這裏

http://square.github.io/picasso/

3)這種依賴關係添加到您的應用程序gradle這個

編譯 'com.squareup.picasso:畢加索:2.5.2'

4)添加在你的RecyclerViewAdapter.class裏面的onBindViewHolder方法的下面一行

Picasso.with(context).load(getDataAdapter1.getImageUrl())。into(holder.imgPost);

1

從URL加載圖像時,排球網絡圖像視圖很有用。 它只是凌空庫一起,我們不需要進行額外的JSON解析庫等,

畢加索,滑翔,也可從網址

相關問題