android - 后退后 ListView 中的重复值

标签 android android-listview listactivity listadapter

我有一个应用程序,它有两个 Activity 。当在主要 Activity 中按下一个按钮时,它会显示自定义的 ListView ,然后我按下硬后退按钮并转到我的应用程序的主页。

然后我再次按下同一个按钮并转到 ListView ,它在 ListView 中显示了重复的值。

请问大家有什么问题吗???

        CookList = new ArrayList<HashMap<String, String>>();
    try {
        url = new URI(cookUri);
        List<DataModels> list1 = new ArrayList<DataModels>();
        CookListServer cookServer = new CookListServer();
        StringBuilder responseString =  cookServer.CookConnect(url, "hi");
        System.out.println("responseString---------"+responseString);

        for(int i=0; i< itemId.size(); i++){
            HashMap<String, String> Cook = new HashMap<String, String>();

            Cook.put("ItemId", itemId.get(i));
            System.out.println("itemId--------"+itemId.get(i));
            Cook.put("ItemName", itemName.get(i));
            Cook.put("ItemQty", itemQty.get(i));
            CookList.add(Cook);
            list1.add(get(i));
        }
        adapter = new MySimpleArrayAdapter(context, CookList, R.layout.cooklist_item, list1);
        setListAdapter(adapter);

    } catch (URISyntaxException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
 }

private DataModels get(int s) {
    return new DataModels(s);
}

@Override
public void onResume() {
    super.onResume();
    adapter.notifyDataSetChanged();
}

@Override
protected void onDestroy() {
    super.onDestroy();
}



// Adapter to list the Albums
public class MySimpleArrayAdapter extends ArrayAdapter<HashMap<String, String>> implements SectionIndexer {
    private final Context context;
    private final ArrayList<HashMap<String, String>> values;
    List<DataModels> modellist;

    public MySimpleArrayAdapter(Context context, ArrayList<HashMap<String, String>> values, int layout, List<DataModels> modellist) {
        super(context, R.layout.cooklist_item, values);
        this.context = context;
        this.values = values;
        this.modellist = modellist;
    }

    private final class ViewHolder {
        public TextView Nametext;
        public TextView Qntytext;
        public Button prepareButton;
    }

    private LayoutInflater mLayoutInflater = null;
    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        final ViewHolder viewHolder;
        if (convertView == null) {
            if (mLayoutInflater == null) {
                mLayoutInflater = LayoutInflater.from(context);
            }

            convertView = mLayoutInflater.inflate(R.layout.cooklist_item, null);

            viewHolder = new ViewHolder();
            viewHolder.Nametext = (TextView) convertView.findViewById(R.id.label);
            viewHolder.Qntytext = (TextView) convertView.findViewById(R.id.textView1);
            viewHolder.prepareButton = (Button) convertView.findViewById(R.id.prepareButton1);

            convertView.setTag(viewHolder);
        } else {
            viewHolder = (ViewHolder) convertView.getTag();
            ((ViewHolder) convertView.getTag()).prepareButton.setTag(modellist.get(position));
        }

        final HashMap<String, String> cooklist = values.get(position);
        final ViewHolder holder = (ViewHolder) convertView.getTag();

        final String ItemId = cooklist.get("ItemId");
        final String ItemName = cooklist.get("ItemName");
        final String ItemQty = cooklist.get("ItemQty");

        System.out.println("ItemId---------"+ItemId);
        System.out.println("ItemName---------"+ItemName);
        System.out.println("ItemQty---------"+ItemQty);

        holder.Nametext.setText(ItemName);

        holder.Qntytext.setText(ItemQty);

        registerForContextMenu(convertView);


        holder.prepareButton.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                DataModels element = (DataModels) viewHolder.prepareButton.getTag();
                holder.prepareButton.setEnabled(false);
            }
        });
        return convertView;
    }

    @Override
    public int getPositionForSection(int arg0) {
        // TODO Auto-generated method stub
        return 0;
    }

    @Override
    public int getSectionForPosition(int position) {
        // TODO Auto-generated method stub
        return 0;
    }

    @Override
    public Object[] getSections() {
        // TODO Auto-generated method stub
        return null;
    }


}

谢谢...

最佳答案

我有一个解决方案

@Override
protected void onDestroy() {
    itemId.clear();
    itemName.clear();
    itemQty.clear();
    super.onDestroy();
}

谢谢....

关于android - 后退后 ListView 中的重复值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12834580/

相关文章:

android - 如何设置Navigation Drawer从右向左打开?

java - Dagger 可以在不注入(inject)子 Activity 类的情况下注入(inject)抽象 Activity 类吗?

android - 在 RecyclerView 中翻转 CardView

Android - ListView 中项目的进入动画

android - 如何将联系人姓名、号码、contact_id 保存到 ArrayList/联系人选择器

android - ListActivity 完成时未调用 onActivityResult

android - 设置列表项背景色失去高亮

android - 当另一个 Activity 启动时,Phonegap 应用程序将关闭。为什么?

android - java.lang.UnsatisfiedLinkError : dlopen failed: 错误

fragment 中的 Android ListView