Ich hatte eine ListView verwendet, um einige Daten (String) aus der Datenbank abgerufen ... ganz einfach, aber einer meiner Kollegen entschied sich, ein Bild vor dem Text auf dem Bildschirm zu setzen. Wir konnten dies nicht mit Listview tun, aber wir fanden ein Beispiel mit GridView, das genau so aussah, wie wir es brauchten. Dann haben wir etwas Zeit mit GridView verbracht und das Bild vor den Text gestellt.Wie bekomme ich das ausgewählte Objekt aus einer Gridview mit ImageAdapter? (Android)
nun leider wissen wir nicht, wie das ausgewählte Element zu erhalten (basierend auf dem Text, der ausgewählt ist aus der itemcomes)
ich OnItemClickListener bin mit und innerhalb onItemClick das Verfahren gridView.getItemSelectedAtPosition() , aber alles, was ich bekomme, ist "null".
Ich weiß jetzt nicht, ob ImageAdapter etwas damit zu tun hat, denn wenn ich es zu einem ArrayAdapter ändere, kann ich das richtige Objekt richtig bekommen, aber auf diese Weise gibt es kein Bild in der Reihe.
gridview.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v, int position, long id{ String selectedItem = (String) (gridView.getItemAtPosicion(position)); //always null } });
was kann ich tun?
EDITED - Listview-Quelle
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
public class ImageAdapter extends BaseAdapter {
private Context context;
private final String[] mobileValues;
private final String[] mobileValuesD;
public ImageAdapter(Context context, String[] mobileValues, String[] mobileValuesD) {
this.context = context;
this.mobileValues = mobileValues;
this.mobileValuesD = mobileValuesD;
}
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService (Context.LAYOUT_INFLATER_SERVICE);
View gridView;
if (convertView == null) {
gridView = new View(context);
// get layout from mobile.xml
gridView = inflater.inflate(R.layout.pesquisa_2, null);
// set value into textview
TextView textView = (TextView) gridView.findViewById(R.id.grid_item_label);
textView.setText(mobileValues[position]+"\n"+mobileValuesD[position]);
// set image based on selected text
ImageView imageView = (ImageView) gridView.findViewById(R.id.grid_item_image);
String mobile = mobileValues[position];
//SELECT DAS IMAGENS
if (mobile.equals("pdt1")) {
imageView.setImageResource(R.drawable.img1);
} else if (mobile.equals("prd2")) {
imageView.setImageResource(R.drawable.feijao);
} else {
imageView.setImageResource(R.drawable.acucar);
}
} else {
gridView = (View) convertView;
}
return gridView;
}
public int getCount() {
return mobileValues.length;
}
public Object getItem(int position) {
return null;
}
public long getItemId(int position) {
return 0;
}
}
Und wie Ihr Code-Bild-Adapters aussieht? –
@TomaszGawel das einzige, was wir getan haben, war den Adapter gridView.setAdapter (new ImageAdapter (this, name_array, description_array)); – user1419496
aber ImageAdapter ist keine Standardklasse, daher stellen Sie den Code der ImageAdapter-Klasse zur Verfügung, da ich vermute, dass die getItem-Methode für Ihren Fall einfach null zurückgibt. –