사용자가 다른 조각의 정보를 필터링하는 정보를 보유하는 여러 ListViews를 생성합니다. 응용 프로그램을 일시 중지했다가 다시 시작하지 않으면 (예 : 화면을 잠그거나 화면을 잠그지 않는 한) 정상적으로 작동합니다. 그렇게하면 목록을 스크롤 할 수는 있지만 클릭하지는 못합니다.ListView는 터치를 받지만 일시 중지 및 다시 시작 후에는 onItemClickListener가 클릭을받지 않습니다.
목록 생성 코드 :
는private View addList(LayoutInflater inflater, ViewGroup container, final FilterValue.SearchCategory type, final String[] labels) {
ArrayAdapter<String> adapter = generateArrayAdapter(inflater, labels, type);
if(adapter == null) {
return null;
}
filterAdapters.add(adapter);
ListView list = (ListView) inflater.inflate(R.layout.on_demand_filter_list, container, false);
list.setAdapter(adapter);
list.setItemsCanFocus(false);
list.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
list.setDescendantFocusability(ViewGroup.FOCUS_BLOCK_DESCENDANTS);
list.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(final View view, final MotionEvent motionEvent) {
LOG.d(TAG, "NO TOUCHING!");
return false; //To change body of implemented methods use File | Settings | File Templates.
}
});
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
LOG.d(TAG, "onItemClick!");
CheckedTextView textView = (CheckedTextView) view.findViewById(R.id.title);
textView.toggle();
if (textView.isChecked()) {
filterValue.addToSelectedList(labels[i], type);
} else {
filterValue.removeFromSelectedList(labels[i], type);
}
}
});
list.setAdapter(adapter);
list.setVisibility(View.GONE);
filterListContainer.addView(list);
return list;
}
onTouch 리스너 만 터치를 수신하기 위해 존재한다. DescendantFocusability는 효과가없는 것처럼 보입니다.이 버그는 추가되기 전후에 존재합니다.
각각은 목록을 표시하거나 숨기는 버튼에 묶여 있습니다. 다음 숨기려면이 버튼을 누르면
는titleHeader.setOnClickListener(new View.OnClickListener() {
public void onClick(View clickedView) {
closeNetworkList();
closeGenreList();
titlesOpen = !titlesOpen;
ImageView indicator = (ImageView) clickedView.findViewById(R.id.filter_expansion_indicator_icon);
if (indicator != null) {
if (titlesOpen) {
indicator.setImageResource(R.drawable.arrow_filter_up);
} else {
indicator.setImageResource(R.drawable.arrow_filter_down);
}
}
if (titlesOpen) {
titlesListView.setVisibility(View.VISIBLE);
} else {
titlesListView.setVisibility(View.GONE);
}
}
});
(addList로 생성 된) 뭔가를 재설정 목록보기를 표시하고 항목을 다시 클릭 할 수 있습니다. 항목 행에 대한
XML :
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:focusable="false"
android:focusableInTouchMode="false"
android:padding="8dp"
android:orientation="horizontal">
<CheckedTextView
android:id="@+id/title"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="@drawable/on_demand_filter_checked_text_sel"
android:gravity="center_vertical"
android:paddingLeft="76dp"
android:focusable="false"
android:focusableInTouchMode="false"
android:drawableLeft="@drawable/checkbox_sel"
android:drawablePadding="14dp"
style="@style/LargeRegular"/>
</LinearLayout>
focusables는 새롭게 추가 된, 그러나 어느 쪽도했다. 문제가 추가되기 전에 문제가 발생했습니다.
목록보기 자체 : 내 절대 순발력 '끝에서 나는
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/list"
android:layout_width="fill_parent"
android:layout_height="275dp"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:divider="@color/Transparent"
android:descendantFocusability="blocksDescendants"
android:cacheColorHint="#ffffff"/>
. 우리 팀의 아무도 이것에 대한 현명한 해결책이 없습니다. 일시 중지하고 다시 시작할 때까지 제대로 작동합니다. 우리는 이력서 나 일시 중지의 견해를 만지는 것은 절대적으로하지 않습니다. 누구든지 도와 줄 수 있습니까? 필요에 따라 더 자세한 정보를 제공 할 수 있습니다.
을 그리고 당신은/당신의 일시 정지를 주석들은이 목록에 영향을주지 않습니다 여부를 확인하기 위해 콜백을 재개하기 위해 노력했다 전망? –
예. 이력서에는 콜백이 없으며 일시 중지 된 것은 재개되지 않습니다. – Calvin
OnItemClickListener 코드를 개별 목록 항목의 getView() 호출에서 생성 된 개별 OnClickListener로 이동하면이 문제가 해결됩니다. 이것은 가능한 해결 방법이지만 흥미 롭습니다. – Calvin