2017-12-03 12 views
1

私は次のコードを持っています。 イメージは、getData()メソッドを使用して描画可能なフォルダから正常に読み込みます。,ですが、URLから画像を読み込み、gridviewを更新する方法がわかりません。 onPostExecute方法私は私のGridViewのコードは、私が例にonPostexecute AsyncTaskでgridviewを使用する方法

を表示してくださいアンドロイドで新しいです onPostExecute方法この

をチェックして、私を助けてください方法にコメントする理由です私はコメント行のクラッシュの下に私のグリッドを更新したアプリケーション

public class MainActivity extends AppCompatActivity { 
    private GridView gridView; 
    private GridViewAdapter gridAdapter; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     gridView = (GridView) findViewById(R.id.gridView); 
     gridAdapter = new GridViewAdapter(this, R.layout.grid_item_layout, getData()); 
     gridView.setAdapter(gridAdapter); 
     APICaller ob = new APICaller(); 
     ob.execute(); 
     gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      public void onItemClick(AdapterView<?> parent, View v, int position, long id) { 
       ImageItem item = (ImageItem) parent.getItemAtPosition(position); 

       //Create intent 
       Intent intent = new Intent(MainActivity.this, abc.class); 
       intent.putExtra("title", item.getTitle()); 
       intent.putExtra("image", item.getImage()); 

       //Start details activity 
       startActivity(intent); 
      } 
     }); 
    } 

    /** 
    * Prepare some dummy data for gridview 
    */ 
    private ArrayList<ImageItem> getData() { 
     final ArrayList<ImageItem> imageItems = new ArrayList<>(); 
     TypedArray imgs = getResources().obtainTypedArray(R.array.image_ids); 
     for (int i = 0; i < imgs.length(); i++) { 
      Bitmap bitmap = BitmapFactory.decodeResource(getResources(), imgs.getResourceId(i, -1)); 
      imageItems.add(new ImageItem(bitmap, "Image#" + i)); 
     } 
     return imageItems; 
    } 

    private ArrayList<ImageItem> getData(appmodel[] data) { 
     Toast.makeText(getApplicationContext(), 
       data.toString(), Toast.LENGTH_LONG).show(); 
     final ArrayList<ImageItem> imageItems = new ArrayList<>(); 
     TypedArray imgs = getResources().obtainTypedArray(R.array.image_ids); 
     for (int i = 0; i < imgs.length(); i++) { 
      Bitmap bitmap = BitmapFactory.decodeResource(getResources(), imgs.getResourceId(i, -1)); 
      imageItems.add(new ImageItem(bitmap, "Image#" + i)); 
     } 
     return imageItems; 
    } 

class APICaller extends AsyncTask{ 

     protected void onPostExecute(Object result) 
     { 
      String data = (String)result;  
      Gson g = new Gson(); 
      Type t = new TypeToken<appmodel[]>(){}.getType(); 
      appmodel[] appm = (appmodel[])g.fromJson(data,t); 
     // gridView = (GridView) findViewById(R.id.gridView); 
    //  gridAdapter = new GridViewAdapter(getApplicationContext(), R.layout.grid_item_layout, getData()); 
    //  gridView.setAdapter(gridAdapter);    


     } 
    @Override 
    protected Object doInBackground(Object[] objects) { 

     HttpClient client = new DefaultHttpClient(); 
     HttpGet getlish = new HttpGet("http://test.abc.com/api/test"); 
     ResponseHandler<String> handler = new BasicResponseHandler(); 
     Object result = new Object(); 
     try { 
      result = client.execute(getlish,handler); 
     } 
     catch(Exception e) 
     { 


     } 
     return result; 
    } 
} 
} 

iはその番組の方法の下JSONデータ

protected void onPostExecute(Object result) 
     { 
      String data = (String)result;  
      Log.d("myTag", data); 
} 
を使用してログをチェックイン

JSON

[ { 
     "apptype": 1, 
     "imagename": "test", 
     "imageurl": "http://test.abc.com/androidimages/test/test.jpg" 
     } 
    ] 
+0

を使用するには、以下の依存関係を追加するように、あなたのrefrenceのために見えますあなたのコードはちょっと面倒です。あなたは 'JSON'から解析URLを取り出し、gridviewアダプタにダウンロードしますか? – Yupi

答えて

0

この

public class GridViewAdapter extends BaseAdapter{ 

    private ArrayList<ImageItem> mItemList; 

    public void updateItemList(ArrayList<ImageItem> newItemList){ 
     this.mItemList = newItemList; 
     notifyDataSetChanged(); 
    } 

} 

と、このMethodeのを呼び出して、新しいリストを設定onPostExecuteようなあなたのアダプタクラスの新しいメソッドを追加します。だからあなたのonPostあなたはピカソライブラリを使用することができ、URLを使用してimagviewロードするには、この

protected void onPostExecute(Object result) 
     { 
      String data = (String)result;  
      Gson g = new Gson(); 
      Type t = new TypeToken<appmodel[]>(){}.getType(); 
      appmodel[] appm = (appmodel[])g.fromJson(data,t); 
      gridAdapter.updateItemList(getData());   


     } 

のように見えるこの

Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(imageView); 

はピカソ

compile 'com.squareup.picasso:picasso:2.5.2' 
関連する問題