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