So, ich mag viele haben eine Galerie erstellen gekämpft, die zwei Reihen für Android hat ..Galerie und baseAdapter Inkrementierung android
bisher meine Lösung ist ein Basisadapter Anruf auslegen zu haben, dass zwei Tabellenzeilen hat mit einem Punkt für ein Foto in jedem, und dann in meinem Basis-Adapter ein Bild platzieren, dann bewegen Sie den Cursor an die nächste Position und ein anderes Bild in den zweiten Platz Halter .. Es funktioniert soweit akzeptieren, dass wir am Ende mit wiederholten Bildern .. also plaziere ich image1 und image2 im ersten Durchlauf und plaziere dann den nächsten Durchlauf image2 über image3, .. gibt es eine Möglichkeit, das Inkrement einzustellen, auf das mein Basisadapter aufgerufen wird?
FIXED CODE UNTEN
public class GallAdapter extends BaseAdapter {
public Cursor cursor;
private int columnIndex;
private Context context;
int imageBackground;
String url;
Uri uri;
int originalImageId;
int imageID;
int columnData;
ViewGroup myp;
ImageView d;
ImageView d2;
Boolean done = false;
public GallAdapter(Context ctx, Cursor cur, int cIn) {
context = ctx;
columnIndex = cIn;
cursor = cur;
}
@Override
public int getCount() {
Toast.makeText(context, "old:"+cursor.getCount()+" 1/2:"+cursor.getCount()/2+" roundedup:"+Math.ceil((float)cursor.getCount()/2), Toast.LENGTH_SHORT).show();
return (int) Math.ceil((float)cursor.getCount()/2);
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
myp = parent;
View v;
if(convertView == null){
v = LayoutInflater.from(context).inflate(R.layout.galitem2, parent, false);
}else{
v = convertView;
}
ImageView photo = (ImageView) v.findViewById(R.id.imageView);
ImageView border = (ImageView) v.findViewById(R.id.borderView);
d = (ImageView) v.findViewById(R.id.delView);
ImageView photo2 = (ImageView) v.findViewById(R.id.image2View);
ImageView border2 = (ImageView) v.findViewById(R.id.border2View);
d2 = (ImageView) v.findViewById(R.id.del2View);
cursor.moveToPosition(position*2);
// Get the current value for the requested column
imageID = cursor.getInt(columnIndex);
// obtain the image URI
uri = Uri.withAppendedPath(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, Integer.toString(imageID));
url = uri.toString();
// Set the content of the image based on the image URI
originalImageId = Integer.parseInt(url.substring(url.lastIndexOf("/") + 1, url.length()));
Bitmap b = MediaStore.Images.Thumbnails.getThumbnail(context.getContentResolver(),
originalImageId, MediaStore.Images.Thumbnails.MINI_KIND, null);
photo.setImageBitmap(b);
photo.setScaleType(ImageView.ScaleType.FIT_CENTER);
d.setTag(uri);
d.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
// TODO Auto-generated method stub
String path = getRealPathFromURI((Uri) v.getTag());
File file = new File(path);
file.delete();
getContentResolver().delete((Uri) v.getTag(), null, null);
sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory()+"/LC/images/")));
Intent galView = new Intent(getBaseContext(), GalleryView2.class);
galView.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
getBaseContext().startActivity(galView);
finish();
}
});
if(position*2+1<=cursor.getCount()-1){
// Move cursor NEXT current position
cursor.moveToPosition(position*2+1);
// Get the current value for the requested column
imageID = cursor.getInt(columnIndex);
// obtain the image URI
uri = Uri.withAppendedPath(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, Integer.toString(imageID));
url = uri.toString();
// Set the content of the image based on the image URI
originalImageId = Integer.parseInt(url.substring(url.lastIndexOf("/") + 1, url.length()));
Bitmap b2 = MediaStore.Images.Thumbnails.getThumbnail(context.getContentResolver(),
originalImageId, MediaStore.Images.Thumbnails.MINI_KIND, null);
photo2.setImageBitmap(b2);
photo2.setScaleType(ImageView.ScaleType.FIT_CENTER);
d2.setTag(uri);
d2.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
// TODO Auto-generated method stub
String path = getRealPathFromURI((Uri) v.getTag());
File file = new File(path);
file.delete();
getContentResolver().delete((Uri) v.getTag(), null, null);
sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory()+"/LC/images/")));
Intent galView = new Intent(getBaseContext(), GalleryView2.class);
galView.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
getBaseContext().startActivity(galView);
finish();
}
});
}else{
//border2.setVisibility(v.INVISIBLE);
d2.setVisibility(v.INVISIBLE);
}
return v;
}
}
}
Wollen Sie also zwei Zeilen, die unabhängig voneinander scrollen, oder erstellen Sie nur eine Galerie mit zwei Zeilen pro Element (getview call)? – dmon
2 Zeilen pro getview Anruf .. – erik