2014-11-01 132 views
-1

我想爲我的項目中的一個項目使用UIL,所以我只是製作了這個原型項目來了解庫的工作原理。我根據https://github.com/nostra13/Android-Universal-Image-Loader的示例項目構建它。但是當我運行proj時,圖像不顯示,logcat也不顯示任何錯誤。我只是在標題欄中看到一個帶有項目名稱的空白屏幕。任何人都可以告訴我代碼中出現了什麼問題。任何幫助都會被感激地接受。GridView無法使用通用圖像加載器加載

public class GridGallery extends Activity { 
DisplayImageOptions options; 
GridView listView; 
String[] imageUrls = new String[] { "drawable://" + R.drawable.img1, 
     "drawable://" + R.drawable.img2, "drawable://" + R.drawable.img3, 
     "drawable://" + R.drawable.img4, "drawable://" + R.drawable.img5, 
     "drawable://" + R.drawable.img6, "drawable://" + R.drawable.img7, 
     "drawable://" + R.drawable.img8, "drawable://" + R.drawable.img9, 
     "drawable://" + R.drawable.img10, "drawable://" + R.drawable.img11 }; 
public static final int INDEX = 1; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(
      this).build(); 
    ImageLoader.getInstance().init(config); 
    options = new DisplayImageOptions.Builder() 
      .showImageOnLoading(R.drawable.ic_stub) 
      .showImageForEmptyUri(R.drawable.ic_empty) 
      .showImageOnFail(R.drawable.ic_error).cacheInMemory(true) 
      .cacheOnDisk(true).considerExifParams(true) 
      .bitmapConfig(Bitmap.Config.RGB_565).build(); 
} 

public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    View rootView = inflater.inflate(R.layout.image_grid, container, false); 
    listView = (GridView) rootView.findViewById(R.id.grid); 
    ((GridView) listView).setAdapter(new ImageAdapter()); 
    listView.setOnItemClickListener(new OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, 
       int position, long id) { 
      startImagePagerActivity(position); 
     } 
    }); 
    return rootView; 

} 

protected void startImagePagerActivity(int position) { 

    // Intent intent = new Intent(getActivity(), SimpleImageActivity.class); 
    // intent.putExtra(Constants.Extra.FRAGMENT_INDEX, 
    // ImagePagerFragment.INDEX); 
    // intent.putExtra(Constants.Extra.IMAGE_POSITION, position); 
    // startActivity(intent); 
} 

public class ImageAdapter extends BaseAdapter { 

    private LayoutInflater inflater; 

    ImageAdapter() { 
     inflater = LayoutInflater.from(getApplicationContext()); 
    } 

    @Override 
    public int getCount() { 
     return imageUrls.length; 
    } 

    @Override 
    public Object getItem(int position) { 
     return null; 
    } 

    @Override 
    public long getItemId(int position) { 
     return position; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     final ViewHolder holder; 
     View view = convertView; 
     if (view == null) { 
      view = inflater 
        .inflate(R.layout.image_grid_item, parent, false); 
      holder = new ViewHolder(); 
      assert view != null; 
      holder.imageView = (ImageView) view.findViewById(R.id.image); 
      holder.progressBar = (ProgressBar) view 
        .findViewById(R.id.progress); 
      view.setTag(holder); 
     } else { 
      holder = (ViewHolder) view.getTag(); 
     } 

     ImageLoader.getInstance().displayImage(imageUrls[position], 
       holder.imageView, options, 
       new SimpleImageLoadingListener() { 
        @Override 
        public void onLoadingStarted(String imageUri, View view) { 
         holder.progressBar.setProgress(0); 
         holder.progressBar.setVisibility(View.VISIBLE); 
        } 

        @Override 
        public void onLoadingFailed(String imageUri, View view, 
          FailReason failReason) { 
         holder.progressBar.setVisibility(View.GONE); 
        } 

        @Override 
        public void onLoadingComplete(String imageUri, 
          View view, Bitmap loadedImage) { 
         holder.progressBar.setVisibility(View.GONE); 
        } 
       }, new ImageLoadingProgressListener() { 
        @Override 
        public void onProgressUpdate(String imageUri, 
          View view, int current, int total) { 
         holder.progressBar.setProgress(Math.round(100.0f 
           * current/total)); 
        } 
       }); 

     return view; 
    } 

} 

static class ViewHolder { 
    ImageView imageView; 
    ProgressBar progressBar; 
} 
} 

清單

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.imagetester" 
android:versionCode="1" 
android:versionName="1.0" > 

<uses-sdk 
    android:minSdkVersion="14" 
    android:targetSdkVersion="21" /> 

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name=".GridGallery" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 

</manifest> 

回答

0

它,因爲你忘了你的onCreateView您網格視圖的適配器添加的項目。設置gridview的適配器後,您必須手動添加項目。

+0

可否請你告訴我什麼items.i比較它與示例proj和它的相同code.nothing diff – 2014-11-01 11:54:53

+0

@ClintonDsouza你應該再次檢查,「imageUrls」尚未使用,事實是你的適配器是因爲你不在裏面放任何東西,因此listview是空的。 – 2014-11-01 12:01:08