我有一个来自AWS的列表,列表按照数据库显示,点击监听器也正常工作。 (如果我点击New-York,它将显示纽约的详细信息)但是在用比较器排序之后,列表将按字母顺序排列..但是当我点击第一项时它会显示其他一些城市细节。
第一个活动代码
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());
答案 0 :(得分:0)
当我点击第一项时,它会显示其他一些城市细节。
因为Comparator
用于Adapter实例而不是lstSettlements
。 onItemClick
根据排序的数据源lstStrings
返回位置。
获取正确的AreaName名称:
String strAreaName=(String)adapterView.getItemAtPosition(i);
并在SettlementsTable
中获取onItemClick
对象,将其传递给Adapter,然后在Adapter上应用排序并获取项目:
SettlementsTable selectedObj=(SettlementsTable)
adapterView.getItemAtPosition(i);