###前提・実現したいこと
Android StudioでListViewを使ったアプリを開発している者です。
いくつかのアイテムをListViewで表示し、任意のアイテムをクリックすることで別の画面に遷移させる事はできました。
前提として、画面遷移の際putExtra()で遷移先にアイテム名を送り、そのアイテム名によって表示するlayoutを変更します。
しかしそのリストをソートしてアイテムをクリックすると、ソート前の位置にあったアイテムが選択されてしまいます。
おそらくsetOnItemClickListener内で取得しているpositionがソートに対応していないからだと思われます。
ソート後に任意のアイテムをクリックし、正しく画面遷移できる方法があれば教えてください。
###該当のソースコード
final String[] names = { "名前1", "名前2", "名前3" };
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_list); ArrayList<User> users = new ArrayList<>(); UserAdapter adapter = new UserAdapter(this, 0, users); myListView = (ListView) findViewById(R.id.myListView); for (int i = 0; i < icons.length; i++){ User user = new User(); user.setName(names[i]); users.add(user); } myListView.setAdapter(adapter); Collections.sort(users, itemComparator); myListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick( AdapterView<?> adapterView, View view, int position, long l ) { Intent intent = new Intent(ListActivity.this,NewActivity.class); intent.putExtra("Name", names[position]); startActivity(intent); } }); }
###試したこと
Collections.sort()の位置を変えてみましたが変化はありませんでした。
adapter.notifyDataSetChanged()およびmyListView.invalidateViews()を記述してみましたが変化はありませんでした。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/09/13 07:59