2017-04-07 118 views
-2

我已经创建了一个包含四个文本视图的自定义列表...此列表中的数据通过一个具有OK按钮的对话框保存。当我添加数据时,它会保存在列表中(直到现在正常工作)。当我添加下一个元素时,所有行都会得到与最后一个值相同的值... notifyDatasetChanged()也不起作用...我是否在某处出错?...这是我的代码...notifyDatasetChanged()不适用于适配器

ok.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 
        String val = editquantity.getText().toString(); 
        valq1 = Integer.parseInt(val); 
        ListView l; 
        l = (ListView) v.findViewById(R.id.order_listview); 
        myAdapter adapter = new myAdapter(getActivity(), row); 
        l.setAdapter(adapter); 
        row.add(""); 
        adapter.notifyDataSetChanged(); 
        builder.dismiss(); 

       } 
      }); 

      builder.setView(dialog); 
      builder.show(); 
+0

你必须增加您的行这样的数据.... row.add( “AnyValue”); .... –

+0

仍然没有工作 –

回答

0

为什么要将行添加为空白。 其次,你已经在适配器中设置了行而没有定义它。 请提供更多的细节问题,因为我无法理解行已经被声明。 即将出现类似的价值问题。 您需要更新行数组,因为它已在适配器上设置。

+0

感谢您提供... :) –

+0

我的荣幸。 ... –

0

有三件事情你需要改变 1.声明的onCreate()以外的对象的ListView 2. 声明的onCreate()
现在的这个这个初始化以下行需要外部适配器对象在onCreate()中只能初始化一次。当您添加新项目时,您无需一次又一次初始化它。因此,请在onCreate()的下方写入。

myAdapter adapter = new myAdapter(getActivity(), row); 

当你添加新的项目,你只需要添加一个项目确定按钮,您的ArrayList命名的行的onClick中,然后调用adapter.notifyDataSetChanged();它将很好地工作。

1

您每次单击确定时都创建了新的适配器。把你的适配器代码的onclick方法外:

ListView l = (ListView) v.findViewById(R.id.order_listview); 
myAdapter adapter = new myAdapter(getActivity(), row); 
l.setAdapter(adapter); 

ok.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       String val = editquantity.getText().toString(); 
       valq1 = Integer.parseInt(val); 

       row.add(""); //add new item to the list 
       adapter.notifyDataSetChanged(); //notify adapter 
       builder.dismiss(); 

      } 
     }); 

     builder.setView(dialog); 
     builder.show(); 
+0

感谢您的帮助 –

+0

不客气。请接受这个答案,如果它解决了你的问题:) – jemsnaban

0

您需要使用中的addAll()方法将剩余的旧值ArrayList中相同的新值。

row.addAll("test"); 
相关问题