2012-11-19 89 views
1

我的購物列表應用程序出現問題。我從這tutorial實現了一個按鈕適配器,我將用它來添加產品列表。我Gridview中的每個buuton都將是一個產品,每個產品都有上下文菜單,我可以將其添加到列表或刪除產品。在運行時添加的Gridview中的新項目

問題是用戶應該有能力添加新產品或類別,我不知道如何在運行時將項目添加到gridview。我認爲我可以創建一些動態數組像列表中的c + +,但我是新來的android和java,所以我不知道如何實現這樣的東西。

任何幫助將不勝感激:)

我試圖執行堆棧,但每一次我試圖把一些應用程序崩潰的時間。同樣是與陣列列表;/

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; 
} 

}

和在網格活動我有另一個數組列表

public static ArrayList<String> arrayInGrid; 
中的onCreate

gridView.setAdapter(new ButtonAdapter(this,arrayInGrid)); 

bu當我嘗試發送新項目到陣列程序崩潰時。

arrayInGrid.add("new"); 

事實上,在按鈕適配器崩潰的

arrayInAdapter.size(); 

任何想法是什麼錯?

回答

2

您可以將動態數組中的值傳遞給該GridView的BaseAdapter。 這是一個教程,希望它能幫助你。 http://www.mkyong.com/android/android-gridview-example/

+0

是的,但我應該如何實現這個動態數組傳遞元素到Base Adapter?你能給我一些提示嗎? – user1835312

+0

您可以通過以下兩種方式實現此目的: 選項1:爲主活動中的動態值創建一個「公共靜態」數組,並從BaseAdapter類訪問數組。 選項2:爲您的BaseAdapter構造函數添加數組列表參數,並在調用此適配器類時將您的數組傳遞給BaseAdapter。 在這裏,您可以將您的構造函數更改爲: ButtonAdapter(上下文c,ArrayList array)mContext = c; arrayInAdapter = array; } –

+0

好的,我改變了我的代碼,因爲你建議,但我仍然有一些問題。我更新了我的問題。任何想法有什麼不對? – user1835312

相關問題