2016-08-23 9 views
-1

これは私のアダプタクラスです。私はサービスから得た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

なぜできないからロードするイメージのために良いLIBSでもありますか?どのようなエラーが出ますか?あなたが持っている問題を特定してください。 – jHilscher

+0

エラーはありませんが、イメージは表示されません。 –

答えて

2

は、URLから画像をロードするために、あなたのRecyclerViewAdapter.classで任意のコードを追加していません。あなたのAndroidManifest.xmlに

<をインターネット許可を追加した場合アンドロイド許可使用

1)最初のチェックを::名= "android.permission.INTERNETあなた"/>

2以下の手順をお試しください)私はSquareからPicasso Libraryを使ってURLから画像を読み込むことをお勧めします。 ':ピカソ:2.5.2 com.squareup.picasso'

4)を追加し、ここで

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

3)アプリのGradle

コンパイルにこの依存関係を追加しますが
それをチェックアウトあなたのRecyclerViewAdapter.classの中のあなたのonBindViewHolderメソッドの下にある行を参照してください。

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

1

Volleyネットワーク画像ビューは、URLから画像を読み込むときに便利です。 はただボレーライブラリと一緒に、我々は、などの解析JSONのための余分なライブラリを必要といけないその

ピカソ、グライド、URL

関連する問題