2014-11-01 2 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와 동일한 코드를 비교해 주시겠습니까? –

+0

@ClintonDsouza 다시 확인해야하며 "imageUrls"는 사용되지 않았으며 사실은 어댑터입니다. 왜냐하면 당신은 그 안에 아무것도 넣지 않으므로 목록보기는 비어 있습니다. –

관련 문제