【问题标题】:Adding an Item to GridView when user clicks button using Custom Adapter当用户使用自定义适配器单击按钮时,将项目添加到 GridView
【发布时间】:2016-08-05 17:22:06
【问题描述】:

我尝试创建一个自定义适配器,在运行时将项目添加到网格(使用 GridView),以响应用户单击按钮。

添加到网格的每个项目都包含 2 个 TextView 项目和一个 ImageView 项目。存储在每个 TextView 项中的文本由用户在单击按钮之前提供。

我在网上找不到任何如何做到这一点的示例,所以我只查看了具有自定义网格适配器的示例,这些适配器在应用程序启动时初始化了一个网格,例如这个:

https://www.caveofprogramming.com/guest-posts/custom-gridview-with-imageview-and-textview-in-android.html

唯一的问题是我没有可以预编程的字符串数组,因为这些是由用户在运行时输入确定的,并且添加到网格的每个对象都应该只在单击按钮时出现,否则,屏幕应该是空白的。

我尝试将字符串数组替换为ArrayList,并添加一个可以在单击按钮后调用的方法,该方法将String添加到ArrayList,然后调用notifyDataSetChanged();可悲的是,它似乎不起作用。查看适用代码sn-ps如下:

   private List<String> list = new ArrayList<>();


   public void addString(String s) {
    list.add(s);
    this.notifyDataSetChanged();

    }

 public View getView(int position, View convertView, ViewGroup parent) {

    Viewt view;

     LayoutInflater inflater = (LayoutInflater) mContext.
            getSystemService(Context.LAYOUT_INFLATER_SERVICE);

      if (convertView == null) {

        convertView = inflater.inflate(R.layout.l, parent, false);

        view = new Viewt();

        view.tview = (TextView) convertView.findViewById(R.id.textView);

        convertView.setTag (view);

        } else {

        view  = (Viewt) convertView.getTag();

       }

       view.tview.setText(list.get(position));

       return convertView;
       }

    public static class Viewt {

    TextView tviewone;

}

【问题讨论】:

    标签: java android gridview


    【解决方案1】:

    您没有在适配器中执行 convertView.setTag(view) 并且您正试图从适配器中的 convertView.getTag() 获取视图。

    if (convertView == null) {
    
        convertView = inflater.inflate(R.layout.l, parent, false);
    
        view = new Viewt();
    
        view.tview = (TextView) convertView.findViewById(R.id.textView);
    
        // add below line in adapter.
        convertView.setTag (view);
    
        } else {
    
        view  = (Viewt) convertView.getTag();
    
       }
    
       view.tview.setText(list.get(position));
    
       return convertView;
       }
    

    【讨论】:

    • 嗨拉曼,你是对的 - 我刚刚添加了它,但它对我的代码工作没有任何影响:(
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-15
    • 2011-12-09
    • 1970-01-01
    相关资源
    最近更新 更多