【问题标题】:Android loop issue [duplicate]Android循环问题[重复]
【发布时间】:2013-12-22 13:48:40
【问题描述】:

我花了一天的时间来看看发生了什么。在一节课中,我有一个简单的列表视图,有多项选择。最后将每个选项放入 String 数组并分享给下一个班级。

SparseBooleanArray checked = listView.getCheckedItemPositions();
        ArrayList<String> selectedItems = new ArrayList<String>();
    for (int i = 0; i < checked.size(); i++) {
        // Item position in adapter
        int position = checked.keyAt(i);
        // Add sport if it is checked i.e.) == TRUE!
        if (checked.valueAt(i))
            selectedItems.add(adapter.getItem(position));
    }

    String[] outputStrArr = new String[selectedItems.size()];

    for (int i = 0; i < selectedItems.size(); i++) {
        outputStrArr[i] = selectedItems.get(i);
    }

   Intent intent = new Intent(getApplicationContext(),
            ReadComments.class);

    // Create a bundle object
    Bundle b = new Bundle();
    b.putStringArray("selectedItems", outputStrArr);

    // Add the bundle to the intent.
    intent.putExtras(b);

    // start the ResultActivity
    startActivity(intent);

在 ReadComments 类中我做了简单的方法:

public String[] tablica(){
        Bundle b = getIntent().getExtras();
        String[] resultArr = b.getStringArray("selectedItems");
        return resultArr;

    }

这会带回我的数据。当我把它放到同一个类的另一个方法中时:

String resultArr[] = tablica();

        int x = 0;
        for (Map<String, String> mListaMar : mListaMarketow) {
            lat = mListaMar.get(TAG_SZER);
            longi = mListaMar.get(TAG_DLUG);
            name = mListaMar.get(TAG_MARKET);
            x=0;


            for (x = 0; x < resultArr.length; x++) {
                if (resultArr[x] == name) {

                    ustawMape();
                    }}}     

UstawMape() 方法负责在谷歌地图上显示标记。我的问题是一个逻辑问题,因为一切正常,但 ustawMape() 方法应该显示许多标记,而现在它只显示一个(ustawMape() 的构造是可以的,因为没有 for 循环它可以工作)。线索是非常简单的第一个循环,用于从 JSON 中获取数据,第二个循环应该过滤并仅显示用户在 listView 中选择的内容。 PLZ帮助我的人!

【问题讨论】:

    标签: android android-layout android-intent android-listview


    【解决方案1】:
    if (resultArr[x] == name)
    

    使用equals() 代替== 进行字符串比较:

    if (name.equals(resultArr[x]))
    

    == 比较对象引用,除非字符串被实习,否则这些引用不会相同。 equals() 比较字符串值。

    【讨论】:

    • 我真丢脸,这是学校的错误:)谢谢帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-09
    • 2015-09-21
    • 2021-10-03
    • 1970-01-01
    • 1970-01-01
    • 2011-06-08
    • 1970-01-01
    相关资源
    最近更新 更多