- Post del forum: 16
18 mag 2015, 17:56:31 Tramite pagina web
18 mag 2015 17:56:31 Tramite pagina web
Salve a tutti, io ho un problema con una gridView di immagini.
Ho messo tutte le immagini in un array, ma quando la griglia viene visualizzata le immagini risultano messe a caso invece che nell'ordine che ho deciso.
Questo è il mio codice, implementato ispirandomi a vari tutorial trovati in giro (sì, sono nuovo sia in Android che nella programmazione in generale):
la main activity:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Clicca sull'immagine per ingrandire"
android:id="@+id/textView2"
android:layout_gravity="center_horizontal"
android:textAlignment="center"
android:paddingBottom="10sp"
android:textColor="@color/white"
android:textSize="@dimen/text_size"/>
<GridView xmlns:android="..."
android:id="@+id/grid_view"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:numColumns="auto_fit"
android:columnWidth="300dp"
android:horizontalSpacing="10dp"
android:verticalSpacing="10dp"
android:gravity="center"
android:stretchMode="columnWidth" >
</GridView>
il relativo codice java:
package ...;
import android.content.Intent;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.GridView;
public class Bambini14 extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_bambini14);
GridView gridView = (GridView) findViewById(R.id.grid_view);
// Instance of ImageAdapter Class
gridView.setAdapter(new ImageAdapter(this));
/**
* On Click event for Single Gridview Item
* */
gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View v,
int position, long id) {
// Sending image id to FullScreenActivity
Intent i = new Intent(getApplicationContext(), FullImageActivity.class);
// passing array index
i.putExtra("id", position);
startActivity(i);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
L'Image Adapter:
package ...;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
public class ImageAdapter extends BaseAdapter {
private Context mContext;
// Keep all Images in array
public Integer[] mThumbIds = {
R.drawable.max27a1ridotta, R.drawable.max27b1ridotta,
R.drawable.bambini14max27c1ridotta, R.drawable.bambini14max29a1ridotta,
R.drawable.bambini14max29b1ridotta, R.drawable.bambini14max30a1ridotta,
R.drawable.bambini14max30b1ridotta, R.drawable.bambini14max33a1ridotta,
R.drawable.bambini14max33b1ridotta, R.drawable.bambini14max36a1ridotta,
R.drawable.bambini14max38a1ridotta, R.drawable.bambini14max38b1ridotta,
R.drawable.bambini14max281ridotta, R.drawable.bambini14max311ridotta,
R.drawable.bambini14max321ridotta, R.drawable.bambini14max341ridotta,
R.drawable.bambini14max351ridotta, R.drawable.bambini14max371ridotta,
};
// Constructor
public ImageAdapterBambini14(Context c) {
mContext = c;
}
@Override
public int getCount() {
return mThumbIds.length;
}
@Override
public Object getItem(int position) {
return mThumbIds[position];
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
if (convertView == null) {
imageView = new ImageView(mContext);
imageView.setImageResource(mThumbIds[position]);
imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
imageView.setLayoutParams(new GridView.LayoutParams(350, 300));
} else {
imageView = (ImageView) convertView;
}
return imageView;
}
}
Come dicevo, viene visualizzata una griglia con il giusto numero di elementi, ma le immagini al loro interno sono casuali invece che nell'ordine da me scelto, molte vengono anche ripetute più volte.
Essendo che sono un pivellino, con tutto questo codice preso qua e là magari ho semplicemente messo più codice di quello che ci vorrebbe, o chissà che altro.
Qualcuno riesce a capire dove potrebbe essere l'errore?
Grazie!