gpt4 book ai didi

java - 如何仅使用数组列表的一部分填充 ListView

转载 作者:行者123 更新时间:2023-11-29 20:28:48 25 4
gpt4 key购买 nike

我不知道这是否可能,但我想问,如何仅使用数组列表的一部分来填充 ListView 。我的数组列表的内容来自 mySQL 数据库(我使用 volley)。它是带有类别和 item_name 的项目列表。我想要做的是,每当按下按钮(类别名称)时,与该类别关联的 item_names 将显示在 arrayList 中。抱歉我的英语不好。

这是我的代码:这显示了我的 listView 中的所有项目。

import ...

public class Menu extends AppCompatActivity implements Response.Listener<String> {

final String TAG = this.getClass().getSimpleName();

public ListView itemList;
public ArrayList<myItem> itemList;
public myItemAdapter adapter;

Button Fruit, Meat, Dairy;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_menu);

String category = "http://10.0.2.2/myPHP/item.php";

StringRequest stringRequestCategory = new StringRequest(Request.Method.GET, category, this, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(getApplicationContext(), "Error retrieving data", Toast.LENGTH_SHORT).show();
}
});

MySingleton.getInstance(getApplicationContext()).addToRequestQueue(stringRequestCategory);

Fruit = (Button)findViewById(R.id.Fruit);
Fruit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//display the items with the category FRUIT

}
});

}

@Override
public void onResponse(String response) {
Log.d(TAG, response);

itemList = new JsonConverter<myItem>().toArrayList(response, myItem.class);

adapter = new myCategoryAdapter(getApplicationContext(), itemList);
itemList.setAdapter(adapter);

}

}

PHP 代码:

<?php
include_once ("init.php");

$query = "SELECT * FROM tbl_item ORDER BY itemID ASC";

$result = mysqli_query($con,$query);

while($row = mysqli_fetch_assoc($result)){
$data[] = $row;

}

echo json_encode($data);
?>

最佳答案

在将列表发送到适配器之前,您必须先过滤列表。

假设您只想显示水果类别。

Fruit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
ArrayList<myItem> filteredItems = new ArrayList<myItem>();
for (myItem item : itemList) {
// Not sure how your myItem class looks like but check category here.
if ("fruit".equals(item.getCategory())) {
filteredItems.add(item);
}
}
adapter.updateContent(filteredItems);
}
});

将此方法添加到您的适配器类中,以便更新 ListView 中显示的项目。

public void updateContent(List<myItem> items) {
currentItems.clear();
currentItems.addAll(items);
notifyDataSetChanged();
}

关于java - 如何仅使用数组列表的一部分填充 ListView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39168067/

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