web-dev-qa-db-ja.com

AndroidでのListViewクリックの処理方法

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を拡張するクラス内に存在します。

138
teepusink

リストビューで、setOnItemClickListenerを使用します

180
David Hedlund

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
    */  
  }
});
87
Aditya Mehta

アダプタークラスの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を参照してください

42
Vijay C

私の前の2つの答えは正しいです-あなたはOnItemClickListenerを使用できます。

OnItemClickListenerOnItemSelectedListenerの違いは、アイテムの選択とフォーカスがAdapterViewのタッチモードに関連しているため、微妙に聞こえますが、実際に重要であることに注意してください。

デフォルトでは、タッチモードでは、選択とフォーカスはありません。このテーマの詳細については、 こちら をご覧ください。

17

このソリューションは本当に最小限であり、コードを台無しにしません。

list_item.xml(listViewではない!)で属性を割り当てますAndroid:onClickこのように:

<RelativeLayout Android:onClick="onClickDoSomething">

そしてアクティビティでこのメソッドを呼び出します:

public void onClickDoSomething(View view) {
   // the view is the line you have clicked on
}
8
Amio.io

誰かが言った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();
    }
});
6
Shudy

まず、クラスはクリックリスナを実装する必要があります。

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();
}

あなたは見て、コードをダウンロードすることができます こちら

5

アクティビティでsetOnItemClickListener()APIを使用します。以下はサンプルです。

listView.setOnItemClickListener(new AdapterView.OnItemClickListener(){

@Override
public void onItemClick(AdapterView<> parent, View view, int position, long id)
{
     // your code here.
}

});
3
Amey Haldankar

Kotlinで、listViewにリスナーをJavaと同じくらい簡単に追加します

your_listview.setOnItemClickListener { parent, view, position, id ->   

    Toast.makeText(this, position, Toast.LENGTH_SHORT).show()

 }
0
Allen Wang