Android Listview仅检索一行
我对ListView有一个问题:它应该显示5行,但它只检索一行 ListView已经在活动的onCreate方法中声明(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
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;
}
}