【发布时间】:2023-04-09 22:19:01
【问题描述】:
正如我在主题中提到的,我在将我从 API 下载的数据直接更新到 ListView 时遇到了问题,所以有一个简单的解释:
我已经创建了带有搜索视图和列表视图的片段。 现在使用 onCreateView() 为我的表加载第一个数组数据。
public ArrayList<item_list> myListView;
然后我尝试用这样的代码实现搜索器:
searchView = view.findViewById(R.id.searchBar);
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
myListView.clear();
CallMyFunction(query);
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
return false;
}
});
在 CallMyFunction 中,我有一个与初始函数相同的函数,用于为我的 ListView 构建第一个适配器。
好的,现在当我使用这个函数时,我得到了 200,我也得到了新的值,但它们只是没有添加到我的 ListView 中。
我的功能:
public void CallMyFunction(String searchString){
String token = this.token;
Toast.makeText(getActivity(), "Loading the ListView...", Toast.LENGTH_SHORT).show();
listOfData = new ArrayList<>();
Call<List<ItemDataClass>> itemDataClassCall = ApiLoginInterface.ITEM_DATA_CLASS_CALL(searchString,token);
itemDataClassCall.enqueue(new Callback<List<ItemDataClass>>() {
@Override
public void onResponse(Call<List<ItemDataClass>> call, Response<List<ItemDataClass>> response) {
if(response.isSuccessful()){
List<ItemDataClass> itemsResponse = response.body();
for(ItemDataClass getList : itemsResponse) {
response_item_list itemList = new response_item_list();
itemList.setDescription(getList.getDESCRIPTION());
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] imageBytes = baos.toByteArray();
imageBytes = Base64.decode(getList.getIMAGE(), Base64.DEFAULT);
Bitmap decodedImage = BitmapFactory.decodeByteArray(imageBytes, 0, imageBytes.length);
itemList.set_image(decodedImage);
itemList.set_name(getList.getPRODUCER());
itemList.set_content(getList.getCONTENT());
itemList.set_cost(getList.getCost());
itemList.set_contest(getList.getCONTEST());
itemList.set_content(getList.getRH_CONTENT());
itemList.set_weight(getList.getWEIGHT());
itemList.set_index(getList.getINDEX());
myListView.add(itemList);
}
} else {
Log.d(TAG, ""+ response.code());
}
adapter.notifyDataSetChanged();
}
@Override
public void onFailure(Call<List<CatalystDataClass>> call, Throwable t) {
Log.d(TAG, "onFailure: " + t.getMessage());
}
});
}
而对于这些代码,奇怪的是我在调用搜索后得到一个空视图(所以在调用这个函数之后)或者我得到旧表值..
有人可以帮忙吗?
【问题讨论】:
标签: android listview retrofit retrofit2