ListFragment内でonListItemClickをオーバーライドしたのに呼ばれない場合の対処法をメモっとく。
#原因
原因は、CustomAdapterのrow内のView(TextViewなど)にフォーカスが当たっているため。
TextViewにフォーカスが当たってしまう理由の一例は、android:inputType=""
を指定している場合など。
#対処法
rowのViewに
.xml
android:clickable="false"
android:focusable="false"
を設定してあげればよい。
例えば、
.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/list_row"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:id="@+id/text1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textMultiLine"
android:clickable="false"
android:focusable="false" />
</LinearLayout>
みたいな感じ。
もしくはArrayAdapter
のgetView
内で動的に設定してあげる。
.java
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = layoutInflater_.inflate(R.layout.list_row, null);
}
TextView text = (TextView)convertView.findViewById(R.id.text1);
shopNameText.setClickable(false);
shopNameText.setFocusable(false);
return convertView;
}
今回の場合は,
android:inputType="textMultiLine"
を
android:ellipsize="end"
に変えても解決できた.