0

J'ai un CustomBaseAdapter avec lequel je remplir certains champs:AsyncTask, CustomBaseAdapter et Listview

public ArrayList<SearchResults> GetSearchResults(){ 
      ArrayList<SearchResults> results = new ArrayList<SearchResults>(); 

      Document doc = Jsoup.parse(kpn); 
      Elements tdsFromSecondColumn = doc.select("table.personaltable td:eq(0)"); 
      Elements tdsFromSecondColumn1 = doc.select("table.personaltable td:eq(1)"); 
      SearchResults sr1 = new SearchResults(); 

      for (Element tdFromSecondColumn : tdsFromSecondColumn) {       
       sr1 = new SearchResults(); 
       sr1.setNaam(tdFromSecondColumn.text()); 
       results.add(sr1); 
      } 

      for (Element tdFromSecondColumn1 : tdsFromSecondColumn1) {        
       sr1 = new SearchResults(); 
       sr1.setWaarde(tdFromSecondColumn1.text()); 
       results.add(sr1); 
      } 

      return results; 

    } 

Je veux tirer cela le la onPostExecute d'un AsyncTask mais je reçois une force proche:

@Override 
    protected void onPostExecute(String result) { 
     ListView kp = (ListView)findViewById(R.id.kpn); 

     ArrayList<SearchResults> searchResults = GetSearchResult();    
     kp.setAdapter(new MyCustomBaseAdapter(this, searchResults)); <--- think here is the error 

     progress.dismiss(); 

    } 

Ce code est-il possible? Si non ce qui devrait être changé. Merci d'avance.

+1

Une exception n aiderait. Veuillez également coller le code de MyCystomAdapter –

+2

Afficher l'erreur dans les journaux – Pedantic

Répondre

0

Ok, je me suis débarrassé de l'exception en faisant:

kp.setAdapter(new MyCustomBaseAdapter(AppName.this, searchResults)); 

Mais les champs sont encore remplis de manière incorrecte avec JSoup, d'abord tous les champs de naam sont affichés et les champs de Waarde.

naam: 
naam: 
naam: 
waarde 
waarde 
waarde 

Il devrait être:

naam: waarde 
naam: waarde 

Est-ce que quelqu'un sait comment combiner les deux pour les boucles de JSoup afin que les champs sont correctement remplis:

 Document doc = Jsoup.parse(kpn); 
     Elements tdsFromSecondColumn = doc.select("table.personaltable td:eq(0)"); 
     Elements tdsFromSecondColumn1 = doc.select("table.personaltable td:eq(1)"); 
     SearchResults sr1 = new SearchResults(); 

      for (Element tdFromSecondColumn : tdsFromSecondColumn) {       
       sr1 = new SearchResults(); 
       sr1.setNaam(tdFromSecondColumn.text()); 
       results.add(sr1); 
      } 

      for (Element tdFromSecondColumn1 : tdsFromSecondColumn1) {        
       sr1 = new SearchResults(); 
       sr1.setWaarde(tdFromSecondColumn1.text()); 
       results.add(sr1); 
      } 

Voici mon CustomBaseAdapter tel que demandé :

public class MyCustomBaseAdapter extends BaseAdapter { 

private static ArrayList<SearchResults> searchArrayList; 

    private LayoutInflater mInflater; 


public MyCustomBaseAdapter(Context context, ArrayList<SearchResults> results) { 
    searchArrayList = results; 
    mInflater = LayoutInflater.from(context); 
    } 


public int getCount() { 
    return searchArrayList.size(); 
    } 

public Object getItem(int position) { 
    return searchArrayList.get(position); 
    } 

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

public View getView(int position, View convertView, ViewGroup parent) { 
    ViewHolder holder; 
    if (convertView == null) { 
    convertView = mInflater.inflate(R.layout.test, null); 
    holder = new ViewHolder(); 
    holder.txtNaam = (TextView) convertView.findViewById(R.id.naam); 
    holder.txtWaarde = (TextView) convertView.findViewById(R.id.waarde); 

    convertView.setTag(holder); 
    } else { 
    holder = (ViewHolder) convertView.getTag(); 
    } 

    holder.txtNaam.setText(searchArrayList.get(position).getNaam()); 
    holder.txtWaarde.setText(searchArrayList.get(position).getWaarde()); 

    return convertView; 
    } 

static class ViewHolder { 
    TextView txtNaam; 
    TextView txtWaarde; 
    } 


} 
Questions connexes