Android Listview仅检索一行

Android Listview仅检索一行,android,android-listview,Android,Android Listview,我对ListView有一个问题:它应该显示5行,但它只检索一行 ListView已经在活动的onCreate方法中声明(doveDormire=(ListView)findViewById(R.id.listadovedormire))。 这是我为listview设置适配器的方法: public void caricaListView() { url="***"; final ArrayAdapter<TutteRicettiveClasse> adapter

我对ListView有一个问题:它应该显示5行,但它只检索一行

ListView已经在活动的onCreate方法中声明(
doveDormire=(ListView)findViewById(R.id.listadovedormire)
)。 这是我为listview设置适配器的方法:

public void caricaListView() {

    url="***";


    final ArrayAdapter<TutteRicettiveClasse> adapter = new TutteRicettiveVicineAdapterWithImage(
            this);

    Myonclicklistneer myclickListener = new Myonclicklistneer();


    doveDormire.setAdapter(adapter);

    new DownloadTutteRicettiveVicineAsyncTask(adapter, url, this).execute();
    doveDormire.setOnItemClickListener(myclickListener);
}
Strutturaclase:

public class StrutturaClasse {
private String nome;

private String immagine;

private String indirizzo;

private String numerocivico;

private String comune;

private String cap;

private String latitudine;

private String longitudine;

private Double distanza;

private String ID;

private String ServiziOfferti;

private String Feature;

public Double getDistanza() {
    return distanza;
}

public void setDistanza(Double distanza) {
    this.distanza = distanza;
}

public String getLatitudine() {
    return latitudine;
}

public void setLatitudine(String latitudine) {
    this.latitudine = latitudine;
}

public String getLongitudine() {
    return longitudine;
}

public void setLongitudine(String longtitudine) {
    this.longitudine = longtitudine;
}

public String getComune() {
    return comune;
}

public void setComune(String comune) {
    this.comune = comune;
}

public String getCap() {
    return cap;
}

public void setCap(String cap) {
    this.cap = cap;
}

public String getNumerocivico() {
    return numerocivico;
}

public void setNumerocivico(String numerocivico) {
    this.numerocivico = numerocivico;
}

public String getIndirizzo() {
    return indirizzo;
}

public void setIndirizzo(String indirizzo) {
    this.indirizzo = indirizzo;
}

public String getNome() {
    return nome;
}

public void setNome(String nome) {
    this.nome = nome;
}

public String getImmagine() {
    return immagine;
}

public void setImmagine(String immagine) {
    this.immagine = immagine;
}

public String getID() {
    return ID;
}

public void setID(String iD) {
    ID = iD;
}

public String getServiziOfferti() {
    return ServiziOfferti;
}

public void setServiziOfferti(String serviziOfferti) {
    ServiziOfferti = serviziOfferti;
}

public String getFeature() {
    return Feature;
}

public void setFeature(String feature) {
    Feature = feature;
}

}
以下是异步任务:

public final class DownloadTutteRicettiveVicineAsyncTask extends
    AsyncTask<Void, TutteRicettiveClasse, Void> {

private final ArrayAdapter<TutteRicettiveClasse> adapter;

String url;
Context ctx;
private ProgressDialog progressDialog;

public DownloadTutteRicettiveVicineAsyncTask(
        ArrayAdapter<TutteRicettiveClasse> adapter, String url, Context ctx) {
    this.adapter = adapter;
    this.url = url;
    progressDialog = new ProgressDialog(ctx);
}

@Override
protected void onPreExecute() {
    super.onPreExecute();
    progressDialog.setMessage(progressDialog.getContext().getString(
            R.string.attendereprego));
    progressDialog.setCancelable(true);

    progressDialog.show();
}

@Override
protected Void doInBackground(Void... params) {

    try {

        JSONObject obj = getJSONObject(url);
        JSONArray jsonArray = obj.getJSONArray("struttura");
        latitudini = new ArrayList<String>();
        longitudini = new ArrayList<String>();
        nomi = new ArrayList<String>();
        immagini = new ArrayList<String>();
        indirizzi = new ArrayList<String>();
        comuni = new ArrayList<String>();
        idtipologia = new ArrayList<String>();
        idstruttura = new ArrayList<String>();
        for (int i = 0; i < jsonArray.length(); i++) {
            JSONObject jsonObject = jsonArray.getJSONObject(i);
            TutteRicettiveClasse t = new TutteRicettiveClasse();
            t.setNome(jsonObject.getString("Nome").replace(
                    "apostrofoandroid", "'"));
            t.setIndirizzo(jsonObject.getString("Indirizzo"));
            t.setNumerocivico(jsonObject.getString("NumeroCivico"));
            t.setComune(jsonObject.getString("Comune"));
            t.setCap(jsonObject.getString("CAP"));
            t.setImmagine(jsonObject.getString("immagine"));
            t.setLatitudine(jsonObject.getString("Latitudine"));
            t.setLongitudine(jsonObject.getString("Longitudine"));
            t.setDistanza(jsonObject.getDouble("distanza"));
            t.setID(jsonObject.getString("ID"));
            t.setFeature(jsonObject.getString("Feature"));

            publishProgress(t);
        }
    } catch (IOException ignored) {
    } catch (JSONException ignored) {
    }
    return null;

}

@Override
protected void onProgressUpdate(TutteRicettiveClasse... values) {
    for (TutteRicettiveClasse a : values) {
        adapter.add(a);
    }

}

@Override
protected void onPostExecute(Void v) {


    progressDialog.hide();
}

private static JSONObject getJSONObject(String url) throws IOException,
        MalformedURLException, JSONException {
    HttpURLConnection conn = (HttpURLConnection) new URL(url)
            .openConnection();

    InputStream in = conn.getInputStream();

    try {
        StringBuilder sb = new StringBuilder();
        BufferedReader r = new BufferedReader(new InputStreamReader(
                new DoneHandlerInputStream(in)));
        for (String line = r.readLine(); line != null; line = r.readLine()) {
            sb.append(line);
        }
        return new JSONObject(sb.toString());
    } finally {
        in.close();
    }
}
}
public final类下载tuttericetiveviceinasynctask扩展
异步任务{
专用最终阵列适配器;
字符串url;
上下文ctx;
私有进程对话;
公共下载TuttericeTiveDeviceAsyncTask(
ArrayAdapter适配器、字符串url、上下文ctx){
this.adapter=适配器;
this.url=url;
progressDialog=新的progressDialog(ctx);
}
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
progressDialog.setMessage(progressDialog.getContext().getString(
R.string.attenderepego);
progressDialog.setCancelable(真);
progressDialog.show();
}
@凌驾
受保护的Void doInBackground(Void…参数){
试一试{
JSONObject obj=getJSONObject(url);
JSONArray JSONArray=obj.getJSONArray(“struttura”);
latitudini=newarraylist();
longitudini=newarraylist();
nomi=新的ArrayList();
immagini=新的ArrayList();
indirizzi=新的ArrayList();
comuni=newarraylist();
idtipologia=newarraylist();
idstruttura=newarraylist();
for(int i=0;i
最后是适配器:

 import com.androidquery.AQuery;
 import android.content.Context;
 import android.graphics.Bitmap;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.ArrayAdapter;
 import android.widget.ImageView;
 import android.widget.TextView;

 public class TutteRicettiveVicineAdapterWithImage extends
    ArrayAdapter<TutteRicettiveClasse> {

String Feature;

public TutteRicettiveVicineAdapterWithImage(Context context) {
    super(context, R.layout.elementolistastrutture, R.id.nome);
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {


    AQuery aq = new AQuery(getContext());
    convertView = super.getView(position, convertView, parent);
    TutteRicettiveClasse t = getItem(position);


    TextView nome = (TextView) convertView.findViewById(R.id.nome);
    String Nome = t.getNome();
    nome.setText(Nome);
    TextView indirizzo = (TextView) convertView
            .findViewById(R.id.indirizzo);
    String Indirizzo = t.getIndirizzo();
    String Numerocivico = t.getNumerocivico();
    if (Numerocivico.equals(" ")) {
        indirizzo.setText(Indirizzo);
    } else {
        indirizzo.setText(Indirizzo + ", " + Numerocivico);
    }
    TextView CAP = (TextView) convertView.findViewById(R.id.cap);
    String Cap = t.getCap();
    CAP.setText(Cap);
    TextView Comune = (TextView) convertView.findViewById(R.id.comune);
    String COmune = t.getComune();
    Comune.setText(COmune);

    TextView Distanza = (TextView) convertView.findViewById(R.id.distanza);
    Double DIstanza = t.getDistanza();

    Distanza.setText(DIstanza + " km");

    Feature = t.getFeature();

    ImageView image = (ImageView) convertView.findViewById(R.id.image);
    String url = t.getImmagine();

    Bitmap preset = aq.getCachedImage(url);
    Bitmap placeholder = aq.getCachedImage(R.drawable.cache);

    if (preset == null) {

        if (aq.shouldDelay(position, convertView, parent, url)) {
            aq.id(image).image(placeholder, 0);
        } else {
            aq.id(image).image(url, true, true, 0, 0, placeholder,
                    AQuery.FADE_IN, 0);
        }

    } else {
        image.setImageBitmap(preset);
    }


    return convertView;
}
}
import com.androidquery.AQuery;
导入android.content.Context;
导入android.graphics.Bitmap;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.ArrayAdapter;
导入android.widget.ImageView;
导入android.widget.TextView;
图像扩展的公共类TuttericeTiveDeviceAdapter
阵列适配器{
字符串特征;
公共TuttericeTiveDeviceAdapterWithimage(上下文){
超级(上下文,R.layout.Elementolistastructure,R.id.nome);
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
AQuery aq=新的AQuery(getContext());
convertView=super.getView(位置、convertView、父级);
TutteRicettiveClasse t=getItem(位置);
TextView nome=(TextView)convertView.findViewById(R.id.nome);
字符串Nome=t.getNome();
nome.setText(nome);
TextView indirizzo=(TextView)convertView
.findviewbyd(R.id.indirizzo);
字符串Indirizzo=t.getIndirizzo();
字符串numeriocivico=t.getnumeriocivico();
if(numeriocivico.equals(“”){
indirizzo.setText(indirizzo);
}否则{
indirizzo.setText(indirizzo+,“+numerivico);
}
TextView CAP=(TextView)convertView.findViewById(R.id.CAP);
字符串Cap=t.getCap();
第二章(第二章);
TextView-Comune=(TextView)convertView.findViewById(R.id.Comune);
字符串COmune=t.getComune();
Comune.setText(Comune);
TextView-Distanza=(TextView)convertView.findViewById(R.id.Distanza);
双重DIstanza=t.getDistanza();
Distanza.setText(Distanza+“km”);
Feature=t.getFeature();
ImageView image=(ImageView)convertView.findViewById(R.id.image);
字符串url=t.getimEngine();
位图预设=aq.getCachedImage(url);
位图占位符=aq.getCachedImage(R.drawable.cache);
如果(预设==null){
if(aq.shouldDelay(位置、转换视图、父项、url)){
aq.id(图像).image(占位符,0);
}否则{
aq.id(image).image(url、true、true、0、0、占位符、,
AQuery.FADE_IN,0);
}
}否则{
image.setImageBitmap(预设);
}
返回视图;
}
}
在调试模式下,我注意到适配器不会在此处更改position的值:

TutteRicettiveClasse t=getItem(位置)

位置始终为0。检索到的Json对象是一个由5个元素组成的数组,所以我真的不明白为什么它没有改变

也许这是上下文的问题?我设置了适配器
 import com.androidquery.AQuery;
 import android.content.Context;
 import android.graphics.Bitmap;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.ArrayAdapter;
 import android.widget.ImageView;
 import android.widget.TextView;

 public class TutteRicettiveVicineAdapterWithImage extends
    ArrayAdapter<TutteRicettiveClasse> {

String Feature;

public TutteRicettiveVicineAdapterWithImage(Context context) {
    super(context, R.layout.elementolistastrutture, R.id.nome);
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {


    AQuery aq = new AQuery(getContext());
    convertView = super.getView(position, convertView, parent);
    TutteRicettiveClasse t = getItem(position);


    TextView nome = (TextView) convertView.findViewById(R.id.nome);
    String Nome = t.getNome();
    nome.setText(Nome);
    TextView indirizzo = (TextView) convertView
            .findViewById(R.id.indirizzo);
    String Indirizzo = t.getIndirizzo();
    String Numerocivico = t.getNumerocivico();
    if (Numerocivico.equals(" ")) {
        indirizzo.setText(Indirizzo);
    } else {
        indirizzo.setText(Indirizzo + ", " + Numerocivico);
    }
    TextView CAP = (TextView) convertView.findViewById(R.id.cap);
    String Cap = t.getCap();
    CAP.setText(Cap);
    TextView Comune = (TextView) convertView.findViewById(R.id.comune);
    String COmune = t.getComune();
    Comune.setText(COmune);

    TextView Distanza = (TextView) convertView.findViewById(R.id.distanza);
    Double DIstanza = t.getDistanza();

    Distanza.setText(DIstanza + " km");

    Feature = t.getFeature();

    ImageView image = (ImageView) convertView.findViewById(R.id.image);
    String url = t.getImmagine();

    Bitmap preset = aq.getCachedImage(url);
    Bitmap placeholder = aq.getCachedImage(R.drawable.cache);

    if (preset == null) {

        if (aq.shouldDelay(position, convertView, parent, url)) {
            aq.id(image).image(placeholder, 0);
        } else {
            aq.id(image).image(url, true, true, 0, 0, placeholder,
                    AQuery.FADE_IN, 0);
        }

    } else {
        image.setImageBitmap(preset);
    }


    return convertView;
}
}