我正在創建一個應用程序,並且我有一個名爲SearchActivity
的活動。我有兩個自定義ListViews
,一個很好。我的問題是與AdapterEventos
一起使用的列表。當我啓動應用程序時,此列表中不會顯示任何內容 該列表中的數據來自一則博文(DescarregarEventos
方法),我認爲這個問題是因爲ArrayAdapter
eventos
爲空。如果您看到我的代碼[1],則在此列表的setAdapter
之前打印的日誌將返回空白。 有人知道我能如何解決這個問題嗎?將項目添加到自定義列表視圖
[1] http://pastebin.com/FZacCrHD
感謝
編輯: 我已經看到POST請求返回的所有數據。 相關代碼:
public class SearchActivity extends ListActivity {
public ArrayList<Evento> eventos = new ArrayList<Evento>();
static final String TAG = "AsyncTaskParseJson.java";
static final HttpClient httpclient = new DefaultHttpClient();
public class Evento {
public String nome;
public String local;
public String inicio;
public Evento(String nome, String local, String inicio) {
this.nome = nome;
this.local = local;
this.inicio = inicio;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getLocal() {
return local;
}
public void setLocal(String local) {
this.local = local;
}
public String getInicio() {
return inicio;
}
public void setInicio(String inicio) {
this.inicio = inicio;
}
}
public class AdapterEventos extends ArrayAdapter<Evento> {
private final Context context;
private final ArrayList<Evento> eventosArrayList;
public AdapterEventos(Context context, ArrayList<Evento> eventos) {
super(context, R.layout.listeventos, eventos);
this.context = context;
this.eventosArrayList = eventos;
}
public View getViewEventos(int position, View convertView, ViewGroup parent) {
//Create inflater
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
//Get rowView from inflater
View LinhaEventoView = inflater.inflate(R.layout.listeventos, parent, false);
//Get the text view from the rowView
TextView nomeView = (TextView) LinhaEventoView.findViewById(R.id.tvNomeEvento);
TextView localView = (TextView) LinhaEventoView.findViewById(R.id.tvLocalEvento);
TextView inicioView = (TextView) LinhaEventoView.findViewById(R.id.tvInicioEvento);
//Set the text for textView
nomeView.setText(eventosArrayList.get(position).getNome());
localView.setText(eventosArrayList.get(position).getLocal());
inicioView.setText(eventosArrayList.get(position).getInicio());
//return rowView
return LinhaEventoView;
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
setContentView(R.layout.search_activity);
new DescarregarEventos().execute();
ListView ListEventos=(ListView)findViewById(R.id.listEventos);
Log.d("eventos","eventos: " + eventos);
ListEventos.setAdapter(new AdapterEventos(this, eventos));
public class DescarregarEventos extends AsyncTask<String, String, String> {
JSONArray dataJsonArr = null;
protected String doInBackground(String... arg) {
HttpPost httppost = new HttpPost(eventosUrl);
String evt = null;
try {
//Criar parâmetros para o Post.
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("eventos", "data"));
httppost.setEntity(new UrlEncodedFormEntity(params));
//Executar o Post.
ResponseHandler<String> responseHandler = new BasicResponseHandler();
evt = httpclient.execute(httppost, responseHandler);
} catch (UnsupportedEncodingException e) {
Log.d("HTTP","ERRO A ADICIONAR OS PARÂMETROS PARA O POST EM \"DescarregarEventos()\"");
e.printStackTrace();
} catch (IOException e) {
Log.d("HTTP", "ERRO EM \"DescarregarEventos()\"");
e.printStackTrace();
}
return evt;
}
// Tratar a resposta do Post e adicionar ao array respetivo.
public void onPostExecute(String evt) {
try {
JSONArray E = new JSONArray(evt);
for (int i = 0; i < E.length(); i++) {
JSONObject evento = E.getJSONObject(i);
eventos.add(new Evento(evento.getString("nome"),evento.getString("localizacao"),evento.getString("data_inicio")));
}
} catch (JSONException e) {
Log.d("HTTP","ERRO A TRATAR OS EVENTOS EM \"DescarregarEventos() \" - \"onPostExecute()\"");
e.printStackTrace();
}
}
}
}
請在您的文章中添加最**相關的代碼。 – codeMagic