0

私は特定のフィールドを埋めたとCustomBaseAdapterありますAsyncTask、CustomBaseAdapterとリストビュー

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; 

    } 

を私はAsyncTaskのonPostExecuteをこのを起動したいが、私は近い力を得る:

@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(); 

    } 

このコードは可能ですか? 変更する必要がない場合。 ありがとうございます。その後、waardeフィールドを

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

しかし、フィールドはまだJSoupで誤っ満たされ、最初にすべてナームフィールドが表示され、:

+1

例外nは役に立ちます。 MyCystomAdapterのコードも貼り付けてください。 –

+2

ログからエラーを通知してください – Pedantic

答えて

0

[OK]を、私は実行して例外を処分しました。

naam: 
naam: 
naam: 
waarde 
waarde 
waarde 

それは次のようになります。

naam: waarde 
naam: waarde 

誰かがフィールドが正しく満たされているように、JSoupのループの2を結合する方法を知っています:

 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); 
      } 

ここに私のCustomBaseAdapterを要求したとして、 :

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; 
    } 


} 
関連する問題