Java Can';无法理解如何从适配器在列表中插入数据

Java Can';无法理解如何从适配器在列表中插入数据,java,android,android-listview,custom-adapter,Java,Android,Android Listview,Custom Adapter,我有一个自定义适配器: 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 st

我有一个自定义适配器:

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
}

}

当然,这是行不通的。我想是因为数组是空的。。我不明白我现在要做什么。感谢您在本节中使用适配器,但我看不出您何时填写“partenze”、“arrivi”和“date”

@覆盖
public void onLoadFinished(加载程序,列表数据){
试一试{
pd.解散();
}捕获(例外e){
}
如果(数据==null){
//错误
}否则{
SoluzioniAdapter适配器=新的SoluzioniAdapter(SoluzioniaActivity.this,partenze,arrivi,date);
mListView.setAdapter(适配器);
}

我认为这些值都在这个
列表soluzioni
中,但是你必须把这些值放在其他三个数组中,或者可能只传递适配器中的
Soluzione
数组,对不起,但是你不能只转储一堆代码,所以说“它不工作”,并希望我们神奇地修复它。您需要缩小问题的范围,然后明确地告诉我们出了什么问题。例如,您说“我想是因为数组是空的”,但您没有告诉我们数组为空是否是错误,或者空数组是否是程序处理不正确的正常情况。如果您不确定变量中的值是否正确,请使用调试器或
Log
方法。是的,Soluzione包含一个名为Corsa的ArrayList。Corsa是一个类w关于我传递的对象。你能帮我解决吗?我想方法是在适配器中传递数组Soluzione,但我不明白怎么做。@End.Game你能发布Soluzione类,看看如何使其工作吗?几分钟前我解决了:)无论如何,谢谢。我接受你的答案,因为这就是问题所在。
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);
}
@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);
}