2015-05-09 89 views
-1

SampleGridViewAdapter.java如何在gridview中使用URL的ArrayList設置圖像?

package com.alifinteractive.viewtext; 

import android.content.Context; 
import android.database.DataSetObserver; 
import android.graphics.Bitmap; 
import android.graphics.BitmapFactory; 
import android.os.AsyncTask; 
import android.util.Log; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ArrayAdapter; 
import android.widget.ImageView; 

import java.io.InputStream; 
import java.net.URL; 
import java.util.ArrayList; 
import java.util.Arrays; 
import java.util.List; 

class SampleGridViewAdapter extends ArrayAdapter { 
    private final Context context; 
    List<String> urls; 
    String[] strBook; 
    Bitmap bmp; 

    public SampleGridViewAdapter(Context context, ArrayList<String> urls) { 
     super(context, R.layout.list_image); 
     this.context = context; 
     this.urls = urls; 
     Log.i("DDDDDDDDDD", String.valueOf(urls)); 
     Object[] mStringArray = urls.toArray(); 
     strBook = Arrays.copyOf(mStringArray, mStringArray.length, String[].class); 
     for (int i = 0; i < strBook.length; i++) { 
      Log.i("GGGGGGGGGGG", String.valueOf(strBook[i])); 
     } 
    } 

    @Override 
    public View getView(final int position, View view, ViewGroup parent) { 
     if (view == null) { 
      view = new ImageView(context); 
     } 
     loadBookIcons(view, position); 
     return view; 
    } 

    private void loadBookIcons(final View view, final int position) { 
     new AsyncTask<Void, Void, Void>() { 
      @Override 
      protected Void doInBackground(Void... params) { 

       try { 
        InputStream in = new URL(strBook[position]).openStream(); 
        bmp = BitmapFactory.decodeStream(in); 
       } catch (Exception e) { 
        Log.i("ERRORRRRRR", e.toString()); 
       } 
       return null; 
      } 

      @Override 
      protected void onPostExecute(Void result) { 
       if (bmp != null) { 
        ((ImageView) view).setImageBitmap(bmp); 
       } 
      } 
     }.execute(); 
    } 

    @Override 
    public int getViewTypeCount() { 
     // TODO Auto-generated method stub 
     return 0; 
    } 

    @Override 
    public boolean hasStableIds() { 
     // TODO Auto-generated method stub 
     return false; 
    } 

    @Override 
    public boolean isEmpty() { 
     // TODO Auto-generated method stub 
     return false; 
    } 

    @Override 
    public void registerDataSetObserver(DataSetObserver arg0) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void unregisterDataSetObserver(DataSetObserver arg0) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public boolean areAllItemsEnabled() { 
     // TODO Auto-generated method stub 
     return false; 
    } 

    @Override 
    public boolean isEnabled(int arg0) { 
     // TODO Auto-generated method stub 
     return false; 
    } 

    @Override 
    public int getCount() { 
     // TODO Auto-generated method stub 
     return 0; 
    } 

    @Override 
    public Object getItem(int position) { 
     // TODO Auto-generated method stub 
     return null; 
    } 

    @Override 
    public long getItemId(int position) { 
     // TODO Auto-generated method stub 
     return 0; 
    } 

} 

這是我家Fragment上,我想設置GridView

package com.alifinteractive.viewtext; 

import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.util.Log; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ImageView; 

import org.json.JSONArray; 
import org.json.JSONObject; 

import java.util.ArrayList; 

public class Home_new extends Fragment { 
    //Login login; 
    String json; 
    JSONObject jsonObj; 
    String imageUrl; 
    //String name; 
    ImageView img; 
    ArrayList<String> Urls = new ArrayList<String>(); 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 

     View rootView = inflater.inflate(R.layout.fragment_home1, container, false); 
     //GridView grid=(GridView)rootView.findViewById(R.id.grid_view); 
     //grid.setAdapter(new SampleGridViewAdapter(getActivity(),Urls)); 
     // username=Login.getUserObject(getActivity(), "username"); 
     // password=Login.getUserObject(getActivity(), "password"); 
     String oldjson = Login.getUserObject(getActivity(), "order_json"); 
     json = oldjson.replaceAll("\\\\", ""); 
     Log.i("QQQQQQQQ", json); 
     try { 
      JSONArray results = new JSONObject(json).getJSONArray("CustomerOrders"); 

      for (int i = 0; i < 10; i++) { 
       JSONObject menuObject = results.getJSONObject(i); 
       Log.i("ooooooooo", String.valueOf(menuObject)); 
       imageUrl = menuObject.getString("image"); 
       Log.i("FFFFFFF", imageUrl); 
       Urls.add(i, imageUrl); 

       Log.i("LLLLLLL", String.valueOf(Urls)); 
      } 

     } catch (Exception e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

     Log.i("ZZZZZZZ", String.valueOf(Urls)); 
     // TODO Auto-generated catch block 
     return rootView; 
    } 
} 

我想設置adapterGridView,但得到的錯誤,幫我謝謝提前

+0

什麼是錯誤? – Pavya

+0

您能否將您的問題中的代碼限制在相關部分? –

+0

@ManeatingKoala對不起,我剛剛在android多數民衆贊成在爲什麼,,,每當我打電話gridview.setadapter(新樣本......),然後出現空指針異常 – Naveen

回答

0
@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
LinearLayout view = new LinearLayout(context); 
view.setOrientation(LinearLayout.HORIZONTAL); 
view.setPadding(1, 1, 1, 1); 
//Icon of Item 
ImageView imageView = new ImageView(context); 
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); 
imageView.setLayoutParams(new GridView.LayoutParams(220, 220)); 
view.setGravity(Gravity.CENTER_HORIZONTAL);  
    String url = getItem(position); 
    Log.i("AAAAAA",String.valueOf(url)); 
    Picasso.with(context) // 
    .load(url) // 
    .error(R.drawable.error) // 
    .fit() // 
    .into(imageView); 
    view.addView(imageView); 

    return view; 

} 
相關問題