gpt4 book ai didi

java - 包含来自外部数据库的数据的 ListView

转载 作者:搜寻专家 更新时间:2023-10-30 22:28:33 24 4
gpt4 key购买 nike

我正在尝试从我的 JSON 文件中捕获数据并将它们放入 ListView 中。我的源代码已正确编译,我的 ListView 是空的,我不知道为什么。

我创建了 DisplayMarinasListView.class,它从 URL 获取 JSON_STRING 数据:http://gypscom.000webhostapp.com/jsongetmarinadata.php .在这个类布局中,我只有 ListView。

public class DisplayMarinasListView extends AppCompatActivity {
String JSON_STRING;
JSONObject jsonObject;
JSONArray jsonArray;
MarinaInfoAdapter marinaInfoAdapter;
ListView listView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.display_marinas_listview_layout);
marinaInfoAdapter = new MarinaInfoAdapter(this, R.layout.row_layout);
listView = (ListView)findViewById(R.id.marinasListView);

JSON_STRING= getIntent().getExtras().getString("json_data");
String marinaId, description;
double BCor, LCor;
int size, availablePlace;
boolean isOpen;

try {
jsonObject = new JSONObject(JSON_STRING);
int count = 0;
jsonArray = jsonObject.getJSONArray("server_response");
while (count<jsonArray.length()) {
JSONObject JO = jsonArray.getJSONObject(count);
marinaId = JO.getString("marina_id");
BCor = JO.getDouble("b_cor");
LCor = JO.getDouble("l_cor");
size = JO.getInt("size");
availablePlace = JO.getInt("available_place");
isOpen = JO.getBoolean("is_open");
description = JO.getString("description");

MarinaInfo marinaInfo = new MarinaInfo(marinaId, BCor, LCor, size,
availablePlace, isOpen, description);
marinaInfoAdapter.add(marinaInfo);
count++;
}
} catch (JSONException e) {
e.printStackTrace();
}

}

MarinaInfo.class 从带有 JSON 数据的 String 中捕获数据

public class MarinaInfo {
private String marinaId, description;
private double BCor, LCor;
private int size, availablePlace;
private boolean isOpen;

public MarinaInfo (String marinaId, double BCor, double LCor, int size, int availablePlace,
boolean isOpen, String description) {
this.setMarinaId(marinaId);
this.setBCor((float) BCor);
this.setLCor((float) LCor);
this.setSize(size);
this.setAvailablePlace(availablePlace);
this.setIsOpen(isOpen);
this.setDescription(description);
}


public String getMarinaID() {
return marinaId;
}
public String getDescription() {
return description;
}
public float getBCor() {
return (float) BCor;
}
public float getLCor() {
return (float) LCor;
}
public int getSize() {
return size;
}
public int getAvailablePlace() {
return availablePlace;
}
public boolean getIsOpen() {
return isOpen;
}
public void setAvailablePlace(int availablePlace) {
this.availablePlace = availablePlace;
}

public void setMarinaId(String marinaId) {
this.marinaId = marinaId;
}

public void setDescription(String description) {
this.description = description;
}

public void setBCor(float BCor) {
this.BCor = BCor;
}

public void setLCor(float LCor) {
this.LCor = LCor;
}

public void setSize(int size) {
this.size = size;
}

public void setIsOpen(boolean open) {
isOpen = open;
}
}

MarinaInfoAdapter.class 应该根据行布局将数据放入我的 ListView 中。

public class MarinaInfoAdapter extends ArrayAdapter {
List list = new ArrayList();
public MarinaInfoAdapter(Context context, int resource) {
super(context, resource);
}

@Override
public void add(Object object) {
super.add(object);
list.add(object);
}

@Override
public int getCount() {
return list.size();

}

@Override
public Object getItem(int position) {
return list.get(position);
}

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

View row;
row = convertView;
MarinaInfoHolder marinaInfoHolder;

if (row==null) {
LayoutInflater layoutInflater = (LayoutInflater) this.getContext().getSystemService(Context
.LAYOUT_INFLATER_SERVICE);
row = layoutInflater.inflate(R.layout.row_layout, parent, false);
marinaInfoHolder = new MarinaInfoHolder();

marinaInfoHolder.tx_availablePlace = (TextView) row.findViewById(R.id
.tx_availablePlace);
marinaInfoHolder.tx_description = (TextView) row.findViewById(R.id.tx_description);
row.setTag(marinaInfoHolder); }
else {
marinaInfoHolder = (MarinaInfoHolder) row.getTag();

}

MarinaInfo marinaInfo = (MarinaInfo) this.getItem(position);
marinaInfoHolder.tx_availablePlace.setText(marinaInfo.getAvailablePlace());
marinaInfoHolder.tx_description.setText(marinaInfo.getDescription());
return row;
}

static class MarinaInfoHolder {
TextView tx_description, tx_availablePlace;
}
}

最佳答案

根据您发布的代码,您根本没有将适配器设置为 ListView 。

做:

listView.setAdapter(marinaInfoAdapter);

关于java - 包含来自外部数据库的数据的 ListView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47889292/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com