2012-03-13 3 views
0

Почему мой код не работает? Я уже пробовал использовать 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; 
} 

}

ответ

0

Попробуйте удалить

listViewAdapter_del.notifyDataSetInvalidated(); 

После того, как вы назвали, mylist_del будет не получить больше данных из listViewAdapter_del, поэтому только сохраните приведенный ниже код и повторите попытку:

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

Спасибо! Я уже пробовал, но я все еще не работаю ... Не понимаю ... Пожалуйста, помогите. – nielletan

+0

Я уже нашел ответ на свой вопрос, на самом деле просто обновляя имена массивов. Затем снова установите адаптер массива. Спасибо, в любом случае. – nielletan

Смежные вопросы