Android listview
でListActivity
を実装しました。ここで、リスト項目をクリックすると、フラッシュの色がオレンジ色でもないので、私の質問に対するこの親切な答えについて何か考えがありますか。
@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にも入れました。
ここで最初に注意しなければならないことは、ボタンやImageButtons
などのClickable要素がListView
要素に存在するときはいつでも、クリックイベントを制御することです。したがって、ListView
はクリックイベントを受け入れる機会を得られません。
あなたがしなければならないことは、ListViewにあるfocusable
またはButton
のImageButton
属性を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"
そしてそれは正常に動作します。それを試してみてください。
ListViewの選択モードをSINGLEに設定しました:
listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
リスト項目にクリック可能なイメージビューまたはテキストビューまたはボタンがある場合、それらをフォーカスできないようにします(アダプタクラスで):
yourButton.setFocusable(false);
yourButton.setFocusableInTouchMode(false);
カスタムアダプタを使用していますか?ボタンやリストリストビューのフォーカスを子として奪うビューを使用してレイアウトを拡大すると、明らかに機能しなくなります。必ず設定してください
Android:focusable="false"
xmlファイルのそのようなビューに。これがあなたの役に立つことを願っています。
リストアクティビティでこれを設定してくださいJavaファイル
listview1.setFocusable(false);
あなたがいることを確認してください
スクロールビューが上記の場所のいずれかに存在する場合は、それを削除します
EclipseはtextIsSelectable="true"
リストビューに使用されたレイアウトxmlのTextViewsに。
リスト内のアイテムをクリックする場合は、これらのタグを追加しないでください。
ソリューションについては、この投稿を参照してください。
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));
}
}
実際には、子ビューがフォーカスを取得しないようにするためのパラメーターがあり、親レイアウトに次を追加するだけです。
Android:descendantFocusability="blocksDescendants"
ドキュメントが説明しているように:
ViewGroupは、その子孫がフォーカスを受け取るのをブロックします。
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();
}
});
listItemButton.setFocusable(false);
listItemButton.setFocusableInTouchMode(false);
adapterで上記を設定します。 [〜#〜] xml [〜#〜]では機能しません