我想通過使用Asynctask並通過RecyclerView.But的幫助將它設置在ImageView上從json中獲取圖像url。當我執行代碼時,它什麼都沒顯示,這裏是我的Json文件不使用asyncctask retreiving從json的圖像
[
{
"albumId": 1,
"id": 1,
"title": "accusamus beatae ad facilis cum similique qui sunt",
"url": "http://placehold.it/600/92c952",
"thumbnailUrl": "http://placehold.it/150/92c952"
},
{
"albumId": 1,
"id": 2,
"title": "reprehenderit est deserunt velit ipsam",
"url": "http://placehold.it/600/771796",
"thumbnailUrl": "http://placehold.it/150/771796"
}
]
這裏是我的MainActivity
public class MainActivity extends AppCompatActivity {
ProgressDialog progressDialog;
private RecyclerView.LayoutManager mLayoutManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recycler);
mLayoutManager = new LinearLayoutManager(this);
recyclerView.setLayoutManager(mLayoutManager);
recyclerView.addItemDecoration(new SimpleDivider(MainActivity.this));
RecyclerViewAdapter recyclerViewAdapter = new RecyclerViewAdapter(this);
recyclerView.setAdapter(recyclerViewAdapter);
new MyAsyncTask().execute();
}
private class MyAsyncTask extends AsyncTask<Object, Object, String> {
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected String doInBackground(Object... params) {
StringBuffer chaine = new StringBuffer("");
try {
URL url = new URL("https://jsonplaceholder.typicode.com/photos");
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("GET");
urlConnection.setDoInput(true);
urlConnection.connect();
InputStream inputStream = urlConnection.getInputStream();
BufferedReader rd = new BufferedReader(new InputStreamReader(inputStream));
String line = "";
while ((line = rd.readLine()) != null) {
chaine.append(line);
}
} catch (IOException e) {
e.printStackTrace();
}
String result = chaine.toString();
return result;
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
JB jb = new JB();
try {
JSONArray jArray = new JSONArray(result);
for (int i = 0; i < jArray.length(); i++) {
JSONObject jObject = jArray.getJSONObject(i);
String image = jObject.getString("url");
jb.setAndroid_image_url(image);
}
} catch (JSONException e) {
Log.e("JSONException", "Error: " + e.toString());
}
}
}
}
這裏是我的RecyclerAdapter
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder> {
ArrayList<JB> jbs;
private Context context;
public RecyclerViewAdapter(Context context) {
this.context = context;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(context).inflate(R.layout.image_layout, parent, false);
return new ViewHolder(itemView);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
Picasso.with(context).load(jbs.get(position).getAndroid_image_url()).resize(120, 60).into(holder.imageView);
}
@Override
public int getItemCount() {
return 0;
}
public class ViewHolder extends RecyclerView.ViewHolder {
ImageView imageView;
public ViewHolder(View itemView) {
super(itemView);
imageView = (ImageView) itemView.findViewById(R.id.image);
}
}
}
我使用PICASO加載照片的ImageView
你有沒有在主要活動本身的回收適配器? –
將AsyncTask類更新爲'extends AsyncTask