web-dev-qa-db-ja.com

Listitem Listviewでクリックが機能しないandroid

Android listviewListActivityを実装しました。ここで、リスト項目をクリックすると、フラッシュの色がオレンジ色でもないので、私の質問に対するこの親切な答えについて何か考えがありますか。

@Override
protected void onListItemClick(ListView l, View v, int position, long id) 
{
    super.onListItemClick(l, v, position, id);
    Toast.makeText(getApplicationContext(), "msg msg", Toast.LENGTH_SHORT)
            .show();

}

このコードをMain ListActivityにも入れました。

31
Rajesh Rajaram

ここで最初に注意しなければならないことは、ボタンやImageButtonsなどのClickable要素がListView要素に存在するときはいつでも、クリックイベントを制御することです。したがって、ListViewはクリックイベントを受け入れる機会を得られません。

あなたがしなければならないことは、ListViewにあるfocusableまたはButtonImageButton属性をfalseに設定することです。しかし、それでも問題なく機能し、ListViewのonListItemClickも機能します。

これを試して、

        <Button  Android:id="@+id/textsize_increaser"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_toRightOf="@+id/back_button"
        Android:focusable="false"
        Android:text=" A + "/>

ここにこれを追加しましたAndroid:focusable="false"そしてそれは正常に動作します。それを試してみてください。

114
Andro Selva

ListViewの選択モードをSINGLEに設定しました:

     listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);

リスト項目にクリック可能なイメージビューまたはテキストビューまたはボタンがある場合、それらをフォーカスできないようにします(アダプタクラスで):

        yourButton.setFocusable(false);
        yourButton.setFocusableInTouchMode(false);
9
Yogesh Somani

カスタムアダプタを使用していますか?ボタンやリストリストビューのフォーカスを子として奪うビューを使用してレイアウトを拡大すると、明らかに機能しなくなります。必ず設定してください

    Android:focusable="false"

xmlファイルのそのようなビューに。これがあなたの役に立つことを願っています。

4
vinaykumar

リストアクティビティでこれを設定してくださいJavaファイル

listview1.setFocusable(false);
4
Mehul

あなたがいることを確認してください

  1. リストビューでスクロールビューを使用しない
  2. リストビューの行アイテムレイアウトでスクロールビューを使用しない

スクロールビューが上記の場所のいずれかに存在する場合は、それを削除します

1
Dhaval Jotaniya

EclipseはtextIsSelectable="true"リストビューに使用されたレイアウトxmlのTextViewsに。

リスト内のアイテムをクリックする場合は、これらのタグを追加しないでください。

1
Mika

ソリューションについては、この投稿を参照してください。

Listitem Listview Androidでクリックが機能しない

View v = parent.getChildAt(position);
parent.requestChildFocus(v,view);
v.setBackground(res.getDrawable(R.drawable."Some drawable for clicked row"));

int count = parent.getChildCount();
for(int i=0; i<count; i++)
{
   if(i!=position)
   {
     v = parent.getChildAt(i);
     v.setBackground(res.getDrawable(R.drawable."some drawable for not clicked row));
   }
}
0
Wes

実際には、子ビューがフォーカスを取得しないようにするためのパラメーターがあり、親レイアウトに次を追加するだけです。

Android:descendantFocusability="blocksDescendants"

ドキュメントが説明しているように:

ViewGroupは、その子孫がフォーカスを受け取るのをブロックします。

0
Yoann Hercouet
listview.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View v, int pos,
                    long id) {
                Toast.makeText(v.getContext(), exm.get(pos).getDefinition(),
                        Toast.LENGTH_SHORT).show();


            }
        });
0
Rons Jackos
listItemButton.setFocusable(false);
listItemButton.setFocusableInTouchMode(false);

adapterで上記を設定します。 [〜#〜] xml [〜#〜]では機能しません

0
Arun Robinson