【问题标题】:Getting wrong position of list items even list is sorted alphabetically即使列表按字母顺序排序,列表项的位置也会出错
【发布时间】:2017-11-10 15:40:17
【问题描述】:

我有一个来自 AWS 的列表,列表按照数据库显示,点击监听器也工作正常。 (就像我点击纽约一样,它将显示纽约的详细信息)但在使用比较器排序后,列表按字母顺序排列..但是当我点击第一项时,它显示了一些其他城市的详细信息。

第一个活动代码

 List<SettlementsTable> lstSettlements = new ArrayList<>();
            lstSettlements.addAll((List<SettlementsTable>) result);
            for (final SettlementsTable table : lstSettlements)

                lstStrings.add(table.getAreaName());

                adapter = new SettlementListAdapter(lstStrings, getApplicationContext());


                listView.setAdapter(adapter);
            adapter.sort(new Comparator<String>() {
                @Override
                public int compare(String s, String t1) {
                    return s.compareTo(t1);
                }
            });
            listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {

                    SettlementsTable settlementsTable = lstSettlements.get(i);
                    Intent intent = new Intent(SettlementsActivity.this, SettlementListResultActivity.class);
                    intent.putExtra("KEY", (Serializable) settlementsTable);
                    startActivity(intent);
                } 

第二个活动代码

 settlementsTable = (SettlementsTable) getIntent().getSerializableExtra("KEY");

    toolbar.setTitle(settlementsTable.getAreaName());
    population = (TextView) findViewById(R.id.textview1);
    establishYear=  (TextView) findViewById(R.id.textView3);

     population.setText(settlementsTable.getPopulation_2015());

【问题讨论】:

    标签: android sorting listview


    【解决方案1】:

    当我点击第一个项目时,它会显示一些其他城市的详细信息。

    因为 Comparator 用于适配器实例而不是 lstSettlementsonItemClick根据排序后的数据源返回位置lstStrings

    获取正确的 AreaName 名称为:

         String strAreaName=(String)adapterView.getItemAtPosition(i); 
    

    并在onItemClick 中获取SettlementsTable 对象,将其传递给Adapter,然后对Adapter 应用排序并获取项目为:

         SettlementsTable selectedObj=(SettlementsTable)
                                          adapterView.getItemAtPosition(i); 
    

    【讨论】:

    • 你好先生..你能告诉我在哪里替换这个代码吗?我现在搞砸了,所以请你帮我写代码吗?谢谢...抱歉,我无法标记
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-15
    • 1970-01-01
    • 2011-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多