ListViewでクリックイベントをリッスンするにはどうすればよいですか?
これは私が今持っているものです
ListView list = (ListView)findViewById(R.id.ListView01);
...
list.setAdapter(adapter);
私が次のことをするとき
list.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
public void onItemSelected(AdapterView parentView, View childView,
int position, long id)
{
setDetail(position);
}
public void onNothingSelected(AdapterView parentView) {
}
});
クリックしても何もしないようです。
これらのコードはすべて、Activityを拡張するクラス内に存在します。
リストビューで、setOnItemClickListener
を使用します
ListViewオブジェクトがlvであると仮定して、以下を実行します-
lv.setClickable(true);
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
Object o = lv.getItemAtPosition(position);
/* write you handling code like...
String st = "sdcard/";
File f = new File(st+o.toString());
// do whatever u want to do with 'f' File object
*/
}
});
アダプタークラスのgetView()メソッドで、「Clickable」および「clickイベントをリッスンできる」という拡張ビューを設定する必要があります。
convertView = mInflater.inflate(R.layout.list_item_text, null);
convertView.setClickable(true);
convertView.setOnClickListener(myClickListener);
次のように、ListActivityでクリックリスナーを宣言します。
public OnClickListener myClickListener = new OnClickListener() {
public void onClick(View v) {
//code to be written to handle the click event
}
};
これは、BaseAdapterを拡張してアダプターをカスタマイズしている場合にのみ当てはまります。
詳細については、Android_SDK/samples/ApiDemos/src/com/example/Android/apis/view/List14.Javaを参照してください
私の前の2つの答えは正しいです-あなたはOnItemClickListener
を使用できます。
OnItemClickListener
とOnItemSelectedListener
の違いは、アイテムの選択とフォーカスがAdapterView
のタッチモードに関連しているため、微妙に聞こえますが、実際に重要であることに注意してください。
デフォルトでは、タッチモードでは、選択とフォーカスはありません。このテーマの詳細については、 こちら をご覧ください。
このソリューションは本当に最小限であり、コードを台無しにしません。
list_item.xml(listViewではない!)で属性を割り当てますAndroid:onClickこのように:
<RelativeLayout Android:onClick="onClickDoSomething">
そしてアクティビティでこのメソッドを呼び出します:
public void onClickDoSomething(View view) {
// the view is the line you have clicked on
}
誰かが言ったsetOnItemClickListener
を使用する必要があります。
コードは次のようになります。
listView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// When clicked, show a toast with the TextView text or do whatever you need.
Toast.makeText(getApplicationContext(), ((TextView) view).getText(), Toast.LENGTH_SHORT).show();
}
});
まず、クラスはクリックリスナを実装する必要があります。
implements OnItemClickListener
次に、ListViewにリスナーを設定します
yourList.setOnItemclickListener(this);
最後に、clicメソッドを作成します。
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
Toast.makeText(MainActivity.this, "You Clicked at " +countries[+ position], Toast.LENGTH_SHORT).show();
}
あなたは見て、コードをダウンロードすることができます こちら
アクティビティでsetOnItemClickListener()APIを使用します。以下はサンプルです。
listView.setOnItemClickListener(new AdapterView.OnItemClickListener(){
@Override
public void onItemClick(AdapterView<> parent, View view, int position, long id)
{
// your code here.
}
});
Kotlinで、listViewにリスナーをJavaと同じくらい簡単に追加します
your_listview.setOnItemClickListener { parent, view, position, id ->
Toast.makeText(this, position, Toast.LENGTH_SHORT).show()
}