Gridview中的新项目在运行时添加

问题描述 投票:1回答:1

我的购物清单申请表有问题。我从这个tutorial实现了一个按钮适配器,我将用它来添加产品到列表。我的gridview中的每个buuton都是一个产品,每个产品都有上下文菜单,我可以将其添加到列表或删除产品。

问题是用户应该有能力添加新产品或类别,我不知道如何在运行时向gridview添加项目。我认为我可以在c ++中创建一些像list一样的动态数组,但我是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;  
}  

}

在Grid Activity中我有另一个arraylist

public static ArrayList<String> arrayInGrid;

in onCreate:

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

但是当我尝试将新项目发送到阵列程序崩溃时。

arrayInGrid.add("new");

事实上它崩溃了

arrayInAdapter.size();  

在按钮适配器中。

任何想法有什么不对?

java android gridview runtime adapter
1个回答
2
投票

您可以将动态数组中的值传递给该GridView的BaseAdapter。这是一个教程,希望它会对你有所帮助。 http://www.mkyong.com/android/android-gridview-example/

© www.soinside.com 2019 - 2024. All rights reserved.