为什么notifyDataSetChanged()不能在我的代码中工作?

问题描述:

为什么我的代码不工作?我已经尝试使用notifyDataSetChanged(),或使用无效()为我的列表视图,或使用.setAdapter()再次为我的适配器,但它仍然无法正常工作,请帮助我。 公共类ListDel延伸活动{为什么notifyDataSetChanged()不能在我的代码中工作?

ListView mylist_del; 
ListViewAdapter listViewAdapter_del; 
TypedArray images_del; 
ImageView bin_image; 

private static String[] names, ages; 
storageListImplementation lists = new storageListImplementation(); 

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.del_layout); 

    names = lists.getNames(); 
    ages = lists.getAges(); 
    images_del = getResources().obtainTypedArray(R.array.icons); 
    bin_image = (ImageView)findViewById(R.id.del_image_icon); 

    listViewAdapter_del = new ListViewAdapter(this); 
    mylist_del = (ListView)findViewById(R.id.listview_delete); 
    mylist_del.setAdapter(listViewAdapter_del); 

} 

private class ListViewAdapter extends BaseAdapter{ 
    private LayoutInflater mInflater; 

    public ListViewAdapter(Context context){ 
     mInflater = LayoutInflater.from(context); 
    } 

    public int getCount() { 
     return names.length; 
    } 

    public Object getItem(int pos) { 
     return pos; 
    } 

    public long getItemId(int position) { 
     return position; 
    } 

    private OnClickListener binClick(ImageView img, final int position, String name) { 

     return new View.OnClickListener(){ 
      public void onClick(View v) { 
       lists.del(names[position]); 
       mylist_del.invalidate(); 
       //mylist_del.setAdapter(listViewAdapter_del); 
       listViewAdapter_del.notifyDataSetInvalidated(); 
       listViewAdapter_del.notifyDataSetChanged();     

       //newlistviewadap(); 
       //mylist_del.setAdapter(new ListViewAdapter(this)); 
       //listViewAdapter_del.notifyDataSetChanged(); 
       //String addSuccessful = "You have successfully deleted "+names[position]+" and his/her information in you database"; 
       //Toast.makeText(getApplicationContext(), addSuccessful, Toast.LENGTH_LONG).show(); 

       //ListDel.this.finish(); 
      } 
     }; 
    } 

    public void newlistviewadap(){ 

     mylist_del.setAdapter(listViewAdapter_del); 
    } 

    public View getView(int position, View convertView, ViewGroup parent) { 
     ViewHolder textView; 
     if(convertView==null){ 
      convertView = mInflater.inflate(R.layout.del_listview_row, null); 
      textView = new ViewHolder(); 
      textView.text = (TextView) convertView.findViewById(R.id.del_values_row); 
      textView.age = (TextView) convertView.findViewById(R.id.del_age_row); 
      textView.image = (ImageView) convertView.findViewById(R.id.del_image); 
      textView.delbutton = (ImageView) convertView.findViewById(R.id.del_image_icon); 
      convertView.setTag(textView); 
     }else{ 
      textView = (ViewHolder) convertView.getTag(); 
     } 

     textView.text.setText(names[position]); 
     textView.age.setText(ages[position]); 

     textView.image.setImageDrawable(images_del.getDrawable(position)); 
     textView.delbutton.setOnClickListener(binClick(textView.delbutton, position, names[position])); 
     return convertView; 
    } 

} 

static class ViewHolder{ 
    TextView text; 
    TextView age; 
    ImageView image; 
    ImageView delbutton; 
} 

}

尝试删除

listViewAdapter_del.notifyDataSetInvalidated(); 

一旦你叫它,mylist_del将从listViewAdapter_del获取更多的数据,所以只请保留以下代码并重试:

lists.del(names[position]); 
listViewAdapter_del.notifyDataSetChanged(); 
+0

谢谢!我已经尝试过了,但我仍然无法工作......我不明白...请帮助。 – nielletan 2012-03-19 03:52:05

+0

我已经找到了我的问题的答案,其实只是更新数组名称。然后再次设置阵列适配器。不管怎么说,还是要谢谢你。 – nielletan 2012-04-01 11:44:16