Neue Artikel im Gridview-Steuerelements zur Laufzeit Hinzugefügt werden
Ich habe ein problem mit meiner Shopping-Liste Anwendung. Ich habe implementiert eine Schaltfläche adapter aus dieser tutorial, die ich verwenden für das hinzufügen von Produkten zu nennen. Jeder buuton in meinem gridview wird ein Produkt und jedes Produkt haben werden, Kontext-Menü, wo kann ich es hinzufügen, auflisten oder löschen Sie das Produkt.
Problem ist, dass Benutzer sollte die Möglichkeit haben, neue Produkte oder Kategorien und ich weiß nicht, wie Sie Elemente hinzufügen gridview in Laufzeit. Ich dachte, ich könnte einige dynamische array-Liste wie in c++, aber ich bin neu in der android-und java-also ich habe keine Idee, wie Sie etwas umsetzen möchten.
Habe ich versucht zu implementieren stack aber jedes mal, wenn ich versuche irgendetwas zu drücken stürzt die app. Das gleiche ist mit dem array-Liste.
ButtonAdapter :
ButtonAdapter(Context c, ArrayList<String> array){
mContext = c;
arrayInAdapter = array; }
public int getCount() {
int a;
a = arrayInAdapter.size();
return a;
}
public View getView(int position, View convertView, ViewGroup parent) {
Button btn;
if (convertView == null) {
//if it's not recycled, initialize some attributes
btn = new Button(mContext);
btn.setLayoutParams(new GridView.LayoutParams(130, 130));
btn.setPadding(8, 8, 8, 8);
}
else {
btn = (Button) convertView;
}
btn.setText(arrayInAdapter.get(position));
btn.setTextColor(Color.RED);
btn.setBackgroundResource(R.drawable.sample_0);
btn.setId(position);
btn.setOnClickListener(new MyOnClickListener(position));
return btn;
}
}
und in der Grid-Aktivität habe ich noch eine arraylist
public static ArrayList<String> arrayInGrid;
in onCreate:
gridView.setAdapter(new ButtonAdapter(this,arrayInGrid ));
aber wenn ich versuche zu senden neuen Artikel, um array-Programm stürzt ab.
arrayInGrid.add("new");
In der Tat, es stürzt bei
arrayInAdapter.size();
Schaltfläche adapter.
irgendwelche Ideen, was falsch ist?
InformationsquelleAutor user1835312 | 2012-11-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie übergeben Sie die Werte in Ihrer dynamischen array auf die BaseAdapter für das GridView.
Hier ist ein tutorial, Hoffe es wird Euch helfen.
http://www.mkyong.com/android/android-gridview-example/
Dies können Sie erreichen, in zwei Möglichkeiten, MÖGLICHKEIT 1: Erstellen Sie eine "public static" - array für dynamische Werte in Ihrem Haupt-Aktivität und den Zugriff auf das array aus der Klasse BaseAdapter. OPTION 2: Fügen Sie einen array-Liste argument für Ihre BaseAdapter-Konstruktor und übergeben Sie das array zu BaseAdapter, wenn Sie nennen diese adapter-Klasse. Hier können Sie ändern Sie den Konstruktor so, ButtonAdapter(Kontext c, ArrayList<Type> array){ mContext = c; arrayInAdapter = array; }
OK, ich habe meinen code, wie Sie vorgeschlagen, aber ich habe noch einige Probleme. ich aktualisiert meine Frage. Irgendwelche Ideen, was falsch ist?
können Sie Ihre Klasse BaseAdapter und GridAvctivity hier.?
InformationsquelleAutor Nirmal Raghavan