2 ssummeraw ssummeraw 于 2013.08.01 16:32 提问

在 ArryList 中合并项目

通过点击一些按钮来生产一个 ArrayList。我想知道如何获取 ArrayList 来把items整合到一个item中。用户点击一次按钮,"1 whatever" 就会填充在list中,如果用户再次点击相同的按钮,"1 whatever"会再次出现在list中。如何让按钮点击两次时,让list显示 "2 whatever"?

  ArrayList<String> listItems=new ArrayList<String>();
ArrayAdapter<String> adapter;

//Regular List
adapter=new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1,listItems);
setListAdapter(adapter);

//List From Another Activity
ArrayList<String> ai= new ArrayList<String>();
ai = getIntent().getExtras().getStringArrayList("list");
if (ai != null) {
listItems.add(ai+"");
adapter.notifyDataSetChanged();
}

//When the User pushes this button
//StackOverFlow help, Ignore this part if it's useless...wasnt sure
lay1.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
listItems.add("1 "+stringm1a+" - "+intm1aa );
adapter.notifyDataSetChanged();
overallTotalproduct =  intm1aa + overallTotalproduct;
            textViewtotalproduct.setText(String.valueOf(overallTotalproduct));
        }
    });

2个回答

markdowneide
markdowneide   2013.08.02 11:48
已采纳

我建议你从 item name 中分离 item count,而不是在一个字符串中存储两个值,使用自定义的 Object adapter,要比使用字符串简单。

String item = "1 Whatever";

// If the list contains this String
if (listItems.contains(item)) {
    String[] words = item.split(" ");        
    int count = Integer.parseInt(words[0]);  
    count++;                                 
    listItems.remove(item);                  
    listItems.add(count + " " + words[1]);   
}

缺点是不能保存列表顺序,但是你可以在任何修改后使用 Collections.sort()来排序。

cj6585256
cj6585256   2013.08.01 17:51

没太搞明白 能详细的吗?

就是List.add()问题吗?

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!