【发布时间】:2017-02-21 06:30:40
【问题描述】:
主要活动类
package com.example.shubham.myproductsale;
import android.graphics.Bitmap;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.widget.Toast;
import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.ImageRequest;
import com.android.volley.toolbox.JsonArrayRequest;
import com.android.volley.toolbox.JsonObjectRequest;
import org.json.JSONArray;
import org.json.JSONObject;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
RecyclerView recyclerView;
RecyclerView.Adapter reAdapter;
RecyclerView.LayoutManager layoutManager;
ArrayList<ListProvider> arrayList= new ArrayList<ListProvider>();
ArrayList<String> url= new ArrayList<String>();
int i;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerView= (RecyclerView)findViewById(R.id.recyclerview);
layoutManager= new GridLayoutManager(this, 2, GridLayoutManager.VERTICAL,false);
recyclerView.setLayoutManager(layoutManager);
recyclerView.setHasFixedSize(true);
//-------> Add data from server
JsonArrayRequest jsonArrayRequest= new JsonArrayRequest(Request.Method.POST, "http://192.168.56.1/myDataset.php", null, new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
JSONArray jsonArray= response;
int len= jsonArray.length();
for(int i=0; i<len; i++){
try{
JSONObject object= jsonArray.getJSONObject(i);
url.add(object.getString("product_url").replace("localhost", "192.168.56.1"));
ListProvider listProvider= new ListProvider(object.getInt("product_id"),object.getString("product_name"),object.getString("product_url").replace("localhost", "192.168.56.1"),object.getString("product_desc"));
arrayList.add(listProvider);
}
catch (Exception e){
Toast.makeText(getApplicationContext(), "Something Exception", Toast.LENGTH_SHORT).show();
}
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(getApplicationContext(), "Something went wrong", Toast.LENGTH_SHORT).show();
}
});
MySingletonClass.getInstance(getApplicationContext()).addToQue(jsonArrayRequest);
for( i=0; i< url.size(); i++){
ImageRequest imageRequest= new ImageRequest(url.get(i), new Response.Listener<Bitmap>() {
@Override
public void onResponse(Bitmap response) {
arrayList.get(i).setBitmapImage(response);
}
}, 0, 0,null , new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(getApplicationContext(), "Something went wrong in downloading", Toast.LENGTH_SHORT).show();
}
});
MySingletonClass.getInstance(getApplicationContext()).addToQue(imageRequest);
}
//-----------------------------
reAdapter= new ListAdapter(arrayList);
recyclerView.setAdapter(reAdapter);
}
}
我的 ListProvider 类
package com.example.shubham.myproductsale;
import android.content.Context;
import android.graphics.Bitmap;
import android.widget.ImageView;
import android.widget.Toast;
import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.ImageRequest;
import com.android.volley.toolbox.Volley;
/**
* Created by SHUBHAM on 20-02-2017.
*/
public class ListProvider {
private int pId;
private String pName, pUrl, pDesc;
private Bitmap bm;
public ListProvider(int pid, String pname, String purl, String pdesc) {
this.setpDesc(pdesc);
this.setpId(pid);
this.setpName(pname);
this.setpUrl(purl);
}
public int getpId() {
return pId;
}
public void setpId(int pId) {
this.pId = pId;
}
public String getpName() {
return pName;
}
public Bitmap getBitmapImage(){
return bm;
}
public void setpName(String pName) {
this.pName = pName;
}
public String getpUrl() {
return pUrl;
}
public void setpUrl(String pUrl) {
this.pUrl = pUrl;
}
public String getpDesc() {
return pDesc;
}
public void setBitmapImage(Bitmap bm){
this.bm= bm;
}
public void setpDesc(String pDesc) {
this.pDesc = pDesc;
}
}
我的 ListAdapter 类
package com.example.shubham.myproductsale;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.ArrayList;
/**
* Created by SHUBHAM on 20-02-2017.
*/
public class ListAdapter extends RecyclerView.Adapter<ListAdapter.RecyclerViewHolder> {
ArrayList<ListProvider> arrayList;
public ListAdapter(ArrayList<ListProvider> arrayList) {
this.arrayList= arrayList;
}
@Override
public RecyclerViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view;
RecyclerViewHolder recyclerViewHolder;
view= LayoutInflater.from(parent.getContext()).inflate(R.layout.item_display_layout, parent, false);
recyclerViewHolder= new RecyclerViewHolder(view);
return recyclerViewHolder;
}
public void onBindViewHolder(RecyclerViewHolder holder, int position) {
ListProvider listProvider;
listProvider= arrayList.get(position);
holder.textView.setText(listProvider.getpName());
holder.imageView.setImageBitmap(listProvider.getBitmapImage());
}
@Override
public int getItemCount() {
return arrayList.size();
}
public static class RecyclerViewHolder extends RecyclerView.ViewHolder{
public TextView textView;
public ImageView imageView;
public RecyclerViewHolder(View itemView) {
super(itemView);
textView= (TextView)itemView.findViewById(R.id.textView);
imageView= (ImageView)itemView.findViewById(R.id.imageView);
}
}
}
我正在使用 recyclerview 创建一个 CUSTOM LISTVIEW,我需要一些文本和一个图像作为一个列表数据。我可以从服务器获取文本数据,但无法下载图像。
我正在使用 Wamp 服务器来测试应用程序。 NB- 创建的视图没有问题。
【问题讨论】:
-
listProvider.getBitmapImage() 你在 onBindViewHolder 中得到了什么?请调试并给予响应
-
如果您使用 volley,那么我的建议是使用 NetworkImageView 而不是简单的图像视图。
-
我得到空@Zaki
-
表示您的图像名称不是来自您的服务器?请正确检查。你的arrayList 不包含图像?请检查设置是否正确
-
arrayList.get(i).setBitmapImage(response);她你在arrayList中设置你的图像。请检查您的回答是否正确。发布您的 JSON 响应数据
标签: android json android-studio android-volley