gpt4 book ai didi

android - 使用 ListView 中的错误值更新 UI

转载 作者:太空狗 更新时间:2023-10-29 13:54:47 24 4
gpt4 key购买 nike

请原谅我的英语。我有一个 Activity 由两个带有 viewpager 的 fragment 组成。每个 fragment 都有一个 ListView 。

我在很多地方都使用这些数据,所以我将其创建为静态的。

class DataHandler {

static ArrayList<MenuHolder> listOfItemsFromJson = new ArrayList<MenuHolder>();


public static ArrayList<MenuHolder> getListOfItemsFromJson() {
return listOfItemsFromJson;
}


public static void addData(MenuHolder holder) {
listOfItemsFromJson.add(holder);

}

public static MenuHolder getData(int position) {

return listOfItemsFromJson.get(position);

}


public static void modifyData(MenuHolder holder, int position) {

listOfItemsFromJson.set(position, holder);
}
public static int size() {

return listOfItemsFromJson.size();
}
}

在这里,我的 fragment 代码。在 onCreateView() 中,我正在清除以前的数据 &添加新数据。

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

View view = inflater.inflate(R.layout.fragment_combo, container, false);

mlistView = (ListView) view.findViewById(R.id.mListView);

//here I am clearing the previous data and loading new data

for (int i = 0; i < DataHandler.size(); i++) {

if (DataHandler.getData(i).isCombo()) {
DataHandler.removeData(i);
}

}


for (int i = 0; i < 3; i++) {
MenuHolder mMenuHolder = new MenuHolder();

mMenuHolder.setItemname(itemNames[i]);
mMenuHolder.setImageName("@mipmap/ic_launcher");
mMenuHolder.setItemCount("0");
mMenuHolder.setItemprice("500");
mMenuHolder.setUserSeleted(false);
mMenuHolder.setCombo(true);

DataHandler.addData(mMenuHolder);

}
index.clear();
for (int i = 0; i < DataHandler.size(); i++) {
if (DataHandler.getListOfItemsFromJson().get(i).isCombo()) {
index.add(i);
}
}

mCombosAdapter = new ComboMenuAdapter(getActivity(), index);

mlistView.setVisibility(View.VISIBLE);
mlistView.setAdapter(mCombosAdapter);


return view;
}

这里我得到了错误的值。 DataHandler.size() 是错误的。

 for (int i = 0; i < DataHandler.size(); i++) {
if (DataHandler.getListOfItemsFromJson().get(i).isCombo()) {
index.add(i);
}
}

在这里,我导航到另一个 Activity 并在 dataHandler 类中进行一些修改,返回后列表大小错误并且列表大小正在增加。

最佳答案

我认为你的DataHandler应该是一个单例;

class DataHandler {
private static DataHandler mInstance = null;
ArrayList<MenuHolder> listOfItemsFromJson;

public DataHandler getInstance() {
if(null == mInstance) {
mInstance = new DataHandler();
}
}
public DataHandler() {
listOfItemsFromJson = new ArrayList<MenuHolder>();
}

public ArrayList<MenuHolder> getListOfItemsFromJson() {
return listOfItemsFromJson;
}


public void addData(MenuHolder holder) {
listOfItemsFromJson.add(holder);

}

public MenuHolder getData(int position) {

return listOfItemsFromJson.get(position);

}


public void modifyData(MenuHolder holder, int position) {

listOfItemsFromJson.set(position, holder);
}
public int size() {

return listOfItemsFromJson.size();
}
}

您可以像这样使用它:DataHandler.getInstance().size();

但我认为你将 dataHandler 设置为静态是丑陋的......你可以创建一个适配器来替换 DataHandler,然后你的所有 ListView 都可以使用这个适配器。

关于android - 使用 ListView 中的错误值更新 UI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40903432/

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