【问题标题】:New items in Gridview added at runtime运行时添加的 Gridview 中的新项目
【发布时间】:2012-11-19 09:39:15
【问题描述】:

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

问题是用户应该能够添加新产品或类别,我不知道如何在运行时将项目添加到 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;  
}  

}

在网格活动中我有另一个数组列表

public static ArrayList<String> arrayInGrid;

在 onCreate 中:

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

但是当我尝试向数组发送新项目时程序崩溃了。

arrayInGrid.add("new");

事实上它崩溃了

arrayInAdapter.size();  

在按钮适配器中。

有什么想法吗?

【问题讨论】:

    标签: java android gridview runtime adapter


    【解决方案1】:

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

    【讨论】:

    • 是的,但是我应该如何实现这个动态数组来将元素传递给基本适配器?你能给我一些提示吗?
    • 您可以通过两种方式实现此目的,选项 1:为您的主要活动中的动态值创建一个“公共静态”数组,并从 BaseAdapter 类访问该数组。选项 2:为您的 BaseAdapter 构造函数添加一个数组列表参数,并在您调用此适配器类时将您的数组传递给 BaseAdapter。在这里,您可以将构造函数更改为 ButtonAdapter(Context c, ArrayList array){ mContext = c; arrayInAdapter = 数组; }
    • 好的,我按照你的建议更改了我的代码,但我仍然有一些问题。我更新了我的问题。有什么想法有什么问题吗?
    • 你能在这里发布你的 BaseAdapter 类和 GridAvctivity 吗?
    猜你喜欢
    • 1970-01-01
    • 2018-04-27
    • 2011-08-07
    • 1970-01-01
    • 2011-08-29
    • 1970-01-01
    • 1970-01-01
    • 2017-11-08
    • 2012-05-25
    相关资源
    最近更新 更多