gpt4 book ai didi

php - 为什么我的 mysql 表的后续结果没有在 ListView 中创建新对象?

转载 作者:行者123 更新时间:2023-11-29 18:54:10 24 4
gpt4 key购买 nike

我想为数据库中的表中的每个条目创建一个 ListView (简单适配器)到新 Activity 中。但是编译下面的代码后,我只能取回第一个条目。

我尝试通过更改 int i = 0 来看看是否可以获得第二个条目(我能够),并尝试更改 response.length() 看看将其更改为“3”是否会显示超过 1 个条目(我不能)。

我关注了this tutorial但我认为他的方法似乎已经过时了。我猜我正在尝试使用 Volley 。

这是从我的 php 文件生成的结果:

[ {"image_url":"https:\/\/kowhx.000webhostapp.com\/codes\/shop\/ny.png","name":"ny","price":"10.5"},
{"image_url":"https:\/\/kowhx.000webhostapp.com\/codes\/shop\/ty.png","name":"ty","price":"11.5"}]

这是我的代码:

public class MenuList extends AppCompatActivity {

private static final String TAG_NAME="name";
private static final String TAG_PRICE="price";
private static final String TAG_IMAGEURL="image_url";

ListView list;
private ArrayList<HashMap<String,String>> menuList;
RequestQueue rq;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_menu_list);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
});

rq = Volley.newRequestQueue(this);
menuList = new ArrayList<>();
list = (ListView) findViewById(R.id.menuListView);
fetch();

}



public void fetch(){
SharedPreferences sharedPreferences = getSharedPreferences(Config.SHARED_PREF_NAME, Context.MODE_PRIVATE);
String url = "https://kowhx.000webhostapp.com/codes/getMenu.php?username="+sharedPreferences.getString(Config.EMAIL_SHARED_PREF,"Not Available");
final JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(Request.Method.GET, url, null, new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {

for (int i = 0; i < response.length(); i++) {
HashMap<String, String> dish = new HashMap<>();
try {
JSONObject jsonObject = response.getJSONObject(i);
String name = jsonObject.getString(TAG_NAME);
String price = jsonObject.getString(TAG_PRICE);
String imageUrl = jsonObject.getString(TAG_IMAGEURL);

dish.put(TAG_NAME, name);
dish.put(TAG_PRICE, price);
dish.put(TAG_IMAGEURL, imageUrl);
} catch (JSONException e) {
e.printStackTrace();
}
menuList.add(dish);
}
ListAdapter adapter = new SimpleAdapter(MenuList.this, menuList, R.layout.menu_item, new String[]{TAG_NAME, TAG_PRICE, TAG_IMAGEURL}, new int[]{R.id.menuName, R.id.menuPrice, R.id.menuImage});
list.setAdapter(adapter);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {

}}
);
rq.add(jsonArrayRequest);

最佳答案

哦,实际上它可以工作,但只是我的布局使用nestedscrollview,所以 ListView 不会显示超过1个项目。如果我将其更改为相对布局,一切都会得到解决。

关于php - 为什么我的 mysql 表的后续结果没有在 ListView 中创建新对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44229202/

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