0

ListViewを実装していて、OnClickListenerでlong idパラメータ(つまり、リストのどのアイテムがクリックされた)を使用してString []からリストを移入しているので、私はそのStringを渡すことができます。クリックした特定のアイテムのテキスト。私はそれを最終的にするつもりですが、それはプログラムのライフサイクルでこのリストを後で再作成する必要があるので問題になるでしょう(これは文字列ではできないと言うかもしれませんが、おそらくStringBuilder []に切り替えるでしょう誰かがこの部分についてのアドバイスを持っていれば自由に感じる)。私はこれが混乱しないことを望み、私が何をしているのか精緻化するために、私はmysqlデータベースから集められたString []からリストビューを作成しています。 )ので、listitemのidは、私がクリックしたリスト内の項目を構成するテキスト文字列を渡すつもりであるため、各項目ごとに異なるので、item idだけを使用することはできません。 (再ソートされた)個々のリストはサーバーにとって役に立たなくなります。これを可能にする方法や潜在的な回避策を教えてもらえますか?文字列をファイナライズせずに文字列を渡す方法

答えて

1

ListViewでOnClickListenerを使用しないでください。 AdapterView.OnItemSelectedListenerを使用します。 メソッドのonItemSelected(ViewViewの親ビュー、int位置、長いID)をオーバーライドすると、ListView、リスト内でクリックされたビュー、その位置、およびそのIDがパラメータとして取得されます。通常のArrayAdapterのようにリストがTextViewsだけの場合は、view.getText()。toString()を使用してStringを取得することができます。

+0

私は実際に同じ文字列を置き換えることができることに気付きました。文字列クラスが不変であることを読んだので混乱しましたが、基本的にStringを割り当てて使用したコードを見ただけです.replaceメソッドと返された結果を同じ文字列に割り当てたので、私にとっても問題ではないはずです。実際には、文字列がヒープ上を指すアドレスを実際に再割り当てしていると仮定します。 ? –

+0

はい。不変は最終的なものと同じではありません。変更不可能とは、挿入文字、削除文字、文字の追加などの方法がない文字列の文字を変更できないことを意味します。 Stringクラスに、このように見えるメソッドがある場合、実際には新しいStringを作成してアドレスを再割り当てしています。 – Jems

+0

ねえ、view.getText()。toString()を使ってどういう意味なのか分かりますが、OnItemClickコンストラクタのビューも渡されるので、なぜこれをOnClickListenerで使うことができませんか? –

関連する問題