Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在运行时添加Gridview中的新项_Java_Android_Gridview_Runtime_Adapter - Fatal编程技术网

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

Java 在运行时添加Gridview中的新项,java,android,gridview,runtime,adapter,Java,Android,Gridview,Runtime,Adapter,我的购物清单申请有问题。我从中实现了一个按钮适配器,用于将产品添加到列表中。我的gridview中的每个buuton都是一个产品,每个产品都有上下文菜单,我可以在其中将其添加到列表或删除产品 问题是,用户应该能够添加新产品或类别,而我不知道如何在运行时将项目添加到gridview。我认为我可以在C++中创建一些动态数组列表,但是我对Android和java是新的,所以我不知道如何实现这样的东西。 我试图实现堆栈,但每次尝试推送某些东西时,应用程序都会崩溃。数组列表也是如此 按钮适配器: Butt

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

问题是,用户应该能够添加新产品或类别,而我不知道如何在运行时将项目添加到gridview。我认为我可以在C++中创建一些动态数组列表,但是我对Android和java是新的,所以我不知道如何实现这样的东西。 我试图实现堆栈,但每次尝试推送某些东西时,应用程序都会崩溃。数组列表也是如此

按钮适配器:

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;  
}  
但当我尝试将新项目发送到阵列时,程序崩溃

arrayInGrid.add("new");
事实上,它在

arrayInAdapter.size();  
在按钮适配器


有什么问题吗?

您可以将动态数组中的值传递给该GridView的BaseAdapter。 这里有一个教程,希望能对你有所帮助。

是的,但是我应该如何实现这个动态数组来将元素传递给基本适配器?您能给我一些提示吗?您可以通过两种方式实现这一点,选项1:为主活动中的动态值创建一个“公共静态”数组,并从BaseAdapter类访问该数组。选项2:为BaseAdapter构造函数添加数组列表参数,并在调用此适配器类时将数组传递给BaseAdapter。在这里,您可以将构造函数更改为ButtonAdapter(Context c,ArrayList数组){mContext=c;arrayInAdapter=array;}好的,我按照您的建议更改了代码,但仍然存在一些问题。我更新了我的问题。你能在这里发布你的BaseAdapter类和GridAvActivity吗。?
arrayInGrid.add("new");
arrayInAdapter.size();