GridView gv;
private void layout() {
gv = new GridView(context);
mAdapter = new ImageAdapter();
gv.setAdapter(mAdapter);
final int L = 15;
Collections.sort(files);
if (files.size() > L) {
for (int i = 0; i < L; i++) {
File f = files.get(i);
shown.add(f);
files.remove(f);
}
}
mAdapter.notifyDataSetChanged();
gv.setNumColumns(1);
gv.setVerticalSpacing(10);
gv.setHorizontalSpacing(10);
gv.setOnScrollListener(new OnScrollListener() {
public void onScrollStateChanged(AbsListView view, int scrollState) {
}
public void onScroll(AbsListView v, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
if (firstVisibleItem + visibleItemCount == totalItemCount) {
if (LOADING == false) {
LOADING = true;
new add().execute(new Integer[] {});
}
}
}
});
gv.setOnItemLongClickListener(new OnItemLongClickListener() {
public boolean onItemLongClick(AdapterView<?> parent, View view,
int position, long id) {
return false;
}
});
gv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
}
});
setContentView(gv);
}
private class add extends AsyncTask<Integer, Void, Void> {
File f;
@Override
protected Void doInBackground(Integer... params) {
if (files.size() > 10) {
for (int i = 0; i < 10; i++) {
f = shown.get(i);
files.add(f);
shown.remove(i);
f = files.get(i);
shown.add(f);
files.remove(i);
}
}
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
mAdapter.notifyDataSetChanged();
gv.setScrollX(0);
LOADING = false;
}
}
private class ImageAdapter extends BaseAdapter {
public int getCount() {
return shown.size();
}
public Object getItem(int position) {
return shown.get(position);
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
LinearLayout l;
TextView tv = new TextView(context);
File f = shown.get(position);
tv.setText(Util.longTotime(f.lastModified()) + "\n"
+ (position + 1) + "/" + shown.size() + "");
ImageView iv = new ImageView(context);
l = new LinearLayout(context);
l.setOrientation(LinearLayout.HORIZONTAL);
iv.setLayoutParams(new GridView.LayoutParams(85, 85));
iv.setScaleType(ImageView.ScaleType.CENTER_CROP);
iv.setPadding(8, 8, 8, 8);
iv.setImageBitmap(BitmapFactory.decodeFile(f.getAbsolutePath()));
l.addView(iv);
l.addView(tv);
return l;
}
}
이게 코든데요... 전 먼저 지운 뒤에 보여주는데 왜 렉이걸리는걸까여? ㅜ
고수님들 도와주세여...