몇일동안 구글링 해보고
helloworld.naver.com/helloworld/429368
https://github.com/nostra13/Android-Universal-Image-Loader
이 두곳을 기초로 제가 만들고 있는 어플에 적용 해보려고 하는데 너무 안되네요....
class MyListAdapter extends BaseAdapter {
DisplayImageOptions options = new DisplayImageOptions.Builder()
.showImageOnLoading(R.drawable.ic_stub)
.showImageForEmptyUri(R.drawable.ic_empty)
.showImageOnFail(R.drawable.ic_error)
.cacheInMemory(true)
.cacheOnDisc(true)
.considerExifParams(true)
.displayer(new RoundedBitmapDisplayer(20))
.build();
private ImageLoadingListener animateFirstListener = new AnimateFirstDisplayListener();
Context maincon;
LayoutInflater Inflater;
ArrayList<MyItem> arSrc;
int layout;
public MyListAdapter(Context context, int alayout, ArrayList<MyItem> aarSrc) {
maincon = context;
Inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
arSrc = aarSrc;
layout = alayout;
}
public int getCount() {
return arSrc.size();
}
public String getItem(int position) {
return arSrc.get(position).ShopName;
}
public long getItemId(int position) {
return position;
}
// 전체업소목록에 필요한 이미지뷰1,텍스트뷰3개 등록
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = Inflater.inflate(layout, parent, false);
}
ImageView img = (ImageView) convertView.findViewById(R.id.img_listpic);
//img.setImageBitmap(arSrc.get(position).Icon);
TextView sn = (TextView) convertView.findViewById(R.id.shopname);
sn.setText(arSrc.get(position).ShopName);
TextView loc = (TextView) convertView.findViewById(R.id.locate);
loc.setText(arSrc.get(position).Locate);
RatingBar rt = (RatingBar) convertView.findViewById(R.id.rating);
rt.setRating(arSrc.get(position).Star);
TextView star = (TextView) convertView.findViewById(R.id.star);
star.setText("(" + arSrc.get(position).Star + ")");
AbsListViewBaseActivity.imageLoader.displayImage(arSrc.get(position).Icon , img, options, animateFirstListener);
return convertView;
}
}
이런식으로 적용하고
all = new MyItem(shopimageUrls, stname, stloc, star, storeid);
arItem.add(all);
이렇게 for문을 돌면서 url 읽어오면서 사용하려고 합니다..
근데 config를 할 곳이 마땅치 않아서
public class AbsListViewBaseActivity extends Activity {
public static ImageLoader imageLoader = ImageLoader.getInstance();
protected static final String STATE_PAUSE_ON_SCROLL = "STATE_PAUSE_ON_SCROLL";
protected static final String STATE_PAUSE_ON_FLING = "STATE_PAUSE_ON_FLING";
protected AbsListView listView;
protected boolean pauseOnScroll = false;
protected boolean pauseOnFling = true;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
initImageLoader(getApplicationContext());
}
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
pauseOnScroll = savedInstanceState.getBoolean(STATE_PAUSE_ON_SCROLL, false);
pauseOnFling = savedInstanceState.getBoolean(STATE_PAUSE_ON_FLING, true);
}
@Override
public void onResume() {
super.onResume();
initImageLoader(getApplicationContext());
applyScrollListener();
}
private void applyScrollListener() {
listView.setOnScrollListener(new PauseOnScrollListener(imageLoader, pauseOnScroll, pauseOnFling));
}
@Override
public void onSaveInstanceState(Bundle outState) {
outState.putBoolean(STATE_PAUSE_ON_SCROLL, pauseOnScroll);
outState.putBoolean(STATE_PAUSE_ON_FLING, pauseOnFling);
}
public static void initImageLoader(Context context) {
// This configuration tuning is custom. You can tune every option, you may tune some of them,
// or you can create default configuration by
// ImageLoaderConfiguration.createDefault(this);
// method.
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context)
.threadPriority(Thread.NORM_PRIORITY - 2)
.denyCacheImageMultipleSizesInMemory()
.discCacheFileNameGenerator(new Md5FileNameGenerator())
.tasksProcessingOrder(QueueProcessingType.LIFO)
.writeDebugLogs() // Remove for release app
.build();
// Initialize ImageLoader with configuration.
ImageLoader.getInstance().init(config);
}
}
이런식으로 했는데 config는 진행 된거 같은데
listView.setOnScrollListener(new PauseOnScrollListener(imageLoader, pauseOnScroll, pauseOnFling));
여기랑
applyScrollListener();
이곳에서 nullpointer 오료가 생기네요...
도대체 어디 부분을 사용해야 하는지... 어느곳에서 적용시켜야 할지 소스를 계속 보고 또봐도 모르겠네요...
어디 부분이 잘못된 걸까요...