2014-06-11 3 views
0

에서 목록에 어떻게 삽입 데이터를 이해 할 수 없습니다내가 정의 어댑터가 어댑터

public class SoluzioniAdapter extends ArrayAdapter<String>{ 

//riferimenti statici alle risorse e agli id 
private final static int LAYOUT = R.layout.riga_soluzioni; 
private final static int PARTENZA = R.id.partenza; 
private final static int ARRIVO = R.id.arrivo; 
private final static int DATA = R.id.data; 
ArrayList<String> partenze; //lista delle partenze 
ArrayList<String> arrivi; //lista degli arrivi 
ArrayList<String> date; //lista delle date 

Context c; //context 
LayoutInflater inflater; //layout inflater 

public SoluzioniAdapter(Context context,ArrayList<String> partenze,ArrayList<String> arrivi,ArrayList<String> date) 
{ 
super(context,PARTENZA); 
this.c = context; 
this.partenze = partenze; 
this.arrivi = arrivi; 
this.date = date; 
this.inflater = LayoutInflater.from(c); 
} 

@Override 
public int getCount() 
{ 
return partenze.size(); //ritorno lunghezza lista (= numero dei titoli) 
} 

//quando la lista richiede una view 
@Override 
public View getView(int pos,View view,ViewGroup parent) 
{ 
CacheRiga cache; //cache 
if(view==null)//se è la prima volta che viene richiesta la view 
{ 
// creo la view ma non l'attacco alla lista in quanto devo ancora modificare 
// i testi delle textview 
view = inflater.inflate(LAYOUT, parent,false); 
cache = new CacheRiga(); //inizializzo la cache 
cache.partenza = (TextView) view.findViewById(PARTENZA); //collego titolo 
cache.arrivo = (TextView) view.findViewById(ARRIVO);//collego descrizione 
cache.data = (TextView) view.findViewById(DATA);//collego descrizione 
view.setTag(cache);//collego view con cache 
} 
else 
{ 
cache = (CacheRiga) view.getTag(); //altrimenti prendo la cache dalla view 
} 

cache.partenza.setText(partenze.get(pos)); //imposto il titolo 
cache.arrivo.setText(arrivi.get(pos)); // e la descrizione 
cache.data.setText(date.get(pos)); // e la descrizione 

return view; 
} 

private class CacheRiga { // classe per la cache delle righe 
public TextView partenza; // cache titolo 
public TextView arrivo; // cache descrizione 
public TextView data; // cache descrizione 
} 

} 

을 내가 통과해야 partenza, arrivo 내 목록에서 data.

private static class SoluzioniLoader extends AsyncTaskLoader<List<Soluzione>> { 

    private FermataComune partenza; 
    private FermataComune arrivo; 
    private String data; 

    public SoluzioniLoader(Context context, FermataComune partenza, FermataComune arrivo, String data) { 
     super(context); 
     this.partenza = partenza; 
     this.arrivo = arrivo; 
     this.data = data; 
    } 

    @Override 
    public List<Soluzione> loadInBackground() { 

    try { 

     List<Soluzione> soluzioni = Client.cercaCorseAndata(partenza, arrivo, data); 
     return soluzioni; 
    } catch (IOException e) { 
     e.printStackTrace(); 
     return null; 
    } 

    } 
} 

private LoaderCallbacks<List<Soluzione>> mLoaderCallbacks = new LoaderCallbacks<List<Soluzione>>() { 
    private ProgressDialog pd; 
    @Override 
    public Loader<List<Soluzione>> onCreateLoader(int id, Bundle args) { 
    pd = new ProgressDialog(SoluzioniActivity.this); 
    pd.setTitle("Caricamento Soluzioni Trovate"); 
    pd.setMessage("Attendi..."); 
    pd.setIndeterminate(false); 
    pd.show(); 

    return new SoluzioniLoader(SoluzioniActivity.this, partenza, arrivo, data); 
} 

@Override 
public void onLoadFinished(Loader<List<Soluzione>> loader, List<Soluzione> data) { 
    try { 
    pd.dismiss(); 
    } catch(Exception e){ 
    } 

    if (data == null) { 
    // ERRORE 
    } else { 
    SoluzioniAdapter adapter = new SoluzioniAdapter(SoluzioniActivity.this, partenze, arrivi, date); 
mListView.setAdapter(adapter); 
} 

물론 작동하지 않습니다. 배열이 비어 있기 때문에 생각합니다. 그리고 지금 당장해야 할 일을 이해할 수 없습니다. 감사합니다

+0

죄송 어댑터에 Soluzione의 배열을 통과하지만, 그냥 덤프 수 없다고 생각 SO에 대한 일련의 코드는 "작동하지 않습니다"라고 말하면서 우리가 마술처럼 고쳐 주길 기대합니다. 문제를 좁히고 구체적으로 무엇이 잘못되었는지 알려줄 필요가 있습니다. 예를 들어 "배열이 비어 있기 때문에 생각합니다."라고 말하면서 배열이 비어 있는지 또는 빈 배열이 프로그램이 올바르게 처리하지 않는 일반적인 상황인지 여부를 알려주지 않았습니다. 변수에 올바른 값이 있는지 확실하지 않으면 디버거 또는'Log' 메소드를 사용하십시오. – ajb

답변

1

이 섹션에서는 어댑터를 사용하고 있지만 "partenze", "arrivi"및 "date"를 채울 때 나는 표시되지 않습니다.

@Override 
public void onLoadFinished(Loader<List<Soluzione>> loader, List<Soluzione> data) { 
    try { 
    pd.dismiss(); 
    } catch(Exception e){ 
    } 

    if (data == null) { 
    // ERRORE 
    } else { 
    SoluzioniAdapter adapter = new SoluzioniAdapter(SoluzioniActivity.this, partenze, arrivi, date); 
mListView.setAdapter(adapter); 
} 

나는 그 값이 List<Soluzione> soluzioni 안에 그러나 당신은 객담 너와 다른 세 배열의 값을 넣어 아니면

+0

예 Soluzione에는 Corsa라는 ArrayList가 있습니다. Corsa는 내가 지나친 물건을 가진 수업입니다. –

+0

해결하도록 도와 줄 수 있습니까? 나는 방법이 어댑터 Soluzione 배열을 전달하는 것 같아요하지만 어떻게 그것을 이해할 수 없다. –

+0

@ End.Game Soluzione 클래스를 게시하여 어떻게 작동하는지 확인할 수 있습니까? – Aiapaec

관련 문제