アンドロイドでのListViewのクリックを処理する方法
-
20-09-2019 - |
質問
どのように私は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) {
}
});
これはクリックで何もしていないようです。
そして、これらすべてのコードでは、活動を拡張するクラスの中に住んでいます。
解決
あなたのリストビューでは、使用setOnItemClickListener
他のヒント
と仮定リストビューオブジェクトは、次の操作を行い、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メソッド()メソッドでは、「イベントをクリックして聞くことができる」「クリッカブル」膨張したビューを設定し、する必要があります。
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 /サンプル/ ApiDemos / SRC / COM /例/アンドロイド/ APIの/ビュー/ List14.java参照
私の前に2つの答えが正しいです - あなたはOnItemClickListener
を使用することができます。
これは微妙な響きながらOnItemClickListener
とOnItemSelectedListener
の違いは、項目の選択と集中をごAdapterView
のタッチモードと関連しているとして、実際に重要であることに注意することは良いことだ。
デフォルトでは、タッチモードでは、何も選択と集中はありません。 あなたは、件名に、さらに詳細な情報はここを見を取ることができます。
このソリューションは、本当に最小限で、めちゃくちゃにあなたのコードをしません。
あなたの list_item.xml の中の属性のアンドロイド割り当てる(NOTリストビュー!):このように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();
}
});
まず、クラスは、クリックlistenenerを実装している必要があります:
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では、Javaのような単純なあなたのListViewコントロールにリスナーを追加します。
your_listview.setOnItemClickListener { parent, view, position, id ->
Toast.makeText(this, position, Toast.LENGTH_SHORT).show()
}