2014-09-04 149 views
-3

请告诉我如何在listview arrayadapter中添加项目? 我只发现了如何使标准的适配器在listview arrayadapter中添加项目

活动:

public class Activity extends Activity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.m); 

     ListView lv=(ListView) findViewById(R.id.lv); 
     String[] Id1={"1","2","3"}, Text1={"one","two","three"}; 

     CustomAdapter ad = new CustomAdapter(this, Id1 , Text1); 
     ad.setCustomListener(new LVListener() { 
      public void onClick(String text) { 
       Log.d("APP", text); 
      } 
     }); 
     lv.setAdapter(ad); 

     Button btn = (Button) findViewById(R.id.btn); 
     btn.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       btn.setVisibility(View.GONE); 
       String[] Id2={"4","5","6"},Text2={"four","five","six"}; 
       // add Id2 and Text2 in listview 
      } 
     }); 
    } 
} 

CustomAdapter:

public class CustomAdapter extends ArrayAdapter<String> { 
    private final Context context; 
    private final String[] id, text; 
    private ListViewListener micl; 
    public CustomAdapter(Context context, String[] id, String[] text) { 
     super(context, R.layout.list, id); 
     this.context = context; 
     this.id = id; 
     this.text = text; 
    } 

    public void setCustomListener(ListViewListener micl) { this.micl = micl; } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View View = inflater.inflate(R.layout.list, parent, false); 

     final int pos = position; 
     final TextView tView = (TextView) View.findViewById(R.id.textView); 
     tView.setText(text[pos]); 

     rowView.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       if (micl != null) 
        micl.onClick(text[pos]); 
      } 
     }); 
     return View; 
    } 
} 

我试着用notifyDatasetChanged做的(),但什么都没有发生。 请告诉我该怎么做。

回答

1

ArrayAdapteradd方法,但为了使用它,你提供给super的数据集不能是一个数组,这是因为使用Arrays.asList(objects),它返回一个不可变列表。从文档

返回指定数组中的对象列表。 列表的大小不能修改,即不支持添加和删除,但可以设置元素。设置元素会修改底层 阵列。