我有一个来自 AWS 的列表,列表按照数据库显示,点击监听器也工作正常。(就像我点击 New-York,它会显示 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());
当我点击第一个项目时,它会显示一些其他城市的详细信息。
因为Comparator
用于 Adapter 实例而不是lstSettlements
. onItemClick
根据排序的数据源返回位置,即lstStrings
.
获取正确的 AreaName 名称为:
String strAreaName=(String)adapterView.getItemAtPosition(i);
并获取SettlementsTable
对象onItemClick
,将其传递给 Adapter 然后对 Adapter 应用排序并获取项目:
SettlementsTable selectedObj=(SettlementsTable)
adapterView.getItemAtPosition(i);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句