Android de cambio de datos en el adaptador

Yo utilice este adaptador para mi ListView:

Appadapter extends ArrayAdapter<ResolveInfo> 
     private PackageManager pm=null;
     List<ResolveInfo> apps;
     AppAdapter(PackageManager pm, List<ResolveInfo> apps) {
    super(Launchalot.this, R.layout.row, apps);
  this.apps=apps;
  this.pm=pm;
}

@Override
public View getView(int position, View convertView,
                      ViewGroup parent) {
      Log.w(Launchalot.this.getPackageName(),"getView");
  if (convertView==null) {
    convertView=newView(parent);
  }

  bindView(position, convertView);

  return(convertView);
}

private View newView(ViewGroup parent) {
    Log.w(Launchalot.this.getPackageName(),"newView");
  return(getLayoutInflater().inflate(R.layout.row, parent, false));
}


private void bindView(int position, View row) {
  TextView label=(TextView)row.findViewById(R.id.label);
  Log.w(Launchalot.this.getPackageName(),"bindView");
  label.setText(getItem(position).loadLabel(pm));

  ImageView icon=(ImageView)row.findViewById(R.id.icon);

  icon.setImageDrawable(getItem(position).loadIcon(pm));
}
    public void notifyDataSetChanged() {
        super.notifyDataSetChanged();
        setNotifyOnChange(true);}}

Puedo rellenar mi punto de vista el uso de este código en una clase ListActivity:

AppAdapter adapter=new AppAdapter(getPackageManager(), getResolveInfoList(0));
setListAdapter(adapter);

Ahora me han cambiado la Lista de apps
He llamado a notifyDataSetChanged()
pero, como creo, nada ha cambiado. Por favor, dime una solución.
Gracias

InformationsquelleAutor ptia | 2013-02-02

2 Kommentare

  1. 8

    Esta información no es suficiente para ver el problema y ayudar. es por eso que voy a explicar con un ejemplo sencillo de cómo utilizar notifyDataSetChanged(); en MyCustomAdapter.
    Aquí está un ejemplo de cómo rellenar el adaptador:

    private ArrayList<String> _names;
    private MyCustomAdapter _adapter;
    @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        _names = new ArrayList<String>();
    
        for(int i = 0; i < _names.size();i++){
            _names.add("Element : "+i);
        }
    
        _adapter = new MyCustomAdapter(this, _names);
        _myListView.setAdapter(_adapter);
    
    
    }
    
    private void refreshListView(){
        _names.clear();
        for(int i = 0; i < _names.size();i++){
            _names.add("New Element : "+i);
        }
        _adapter.notifyDataSetChanged();
    }

    La idea aquí es cambiar la List el que se utiliza para llenar el listview. Claro que, rellenarlo con los datos nuevos y después de que la llamada notifyDataSetChanged();.

    Eso es todo.

  2. 1

    Corto y rápido, llamar a estos dos líneas después de sentir los cambios se han hecho en el conjunto de datos.

    AppAdapter adapter=new AppAdapter(getPackageManager(), getResolveInfoList(0));
    setListAdapter(adapter);

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea