Так что я искал и искал каждый метод, который видел, но ничего не решает проблему. Мое listview генерирует с помощью пользовательского адаптера, я добавляю представление нижнего колонтитула и onTouchMethod, и я знаю, что он конкурирует за фокус с lsitview, а listview выигрывает, поскольку я читал об этой ошибке. Но, возможно, есть что-то, что я не вижу, и мне не хватает.Нижний колонтитул ListView выбирается только после первого выбора элемента списка.
Мне нужен просмотр нижнего колонтитула, который можно выбирать в любое время, прямо сейчас он выбирается только после того, как элемент выбран в списке, а затем все работает так, как предполагается. Но при первой загрузке списка, нижний колонтитул не отвечает.
Вот мой код.
customAdapter = new ListAdapter(this, R.layout.itemlistrow, store_data);
customAdapter.setNotifyOnChange(true);
listView.addFooterView(none_of_the_above, null, false);
listView.setAdapter(customAdapter);
listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
listView.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> arg0, final View view,
int position, long id) {
none_of_the_above.setOnTouchListener(new View.OnTouchListener() {
@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
v.setSelected(true);
view.setSelected(false);
view.setActivated(false);
view.clearFocus();
Log.e("NoneOFTheAboveButton:onTouch", "clicked");
none_of_the_above.setBackground(getResources().getDrawable(R.drawable.store_setup2_found_selection_boxes_modified_states));
}
return false;
}
});
listView.clearFocus();
none_of_the_above.setSelected(false);
view.setSelected(true);
view.setActivated(true);
selectedPosition = position;
customAdapter.setSelectedPosition(selectedPosition);
}
});
моя кнопка колонтитула XML
<Button xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/none_of_the_above"
android:layout_width="match_parent"
android:layout_height="45dp"
android:layout_marginBottom="10dp"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:background="@drawable/store_setup2_found_selection_boxes_modified_states"
android:focusable="true"
android:clickable="true"
android:text="NONE OF THE ABOVE" />
ListView XML:
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/selection_1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="20dp"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_marginTop="20dp"
android:clickable="false"
android:focusable="false"
android:descendantFocusability="blocksDescendants" >
я теперь взял onTouchMethod из OnItemClick из ListView и поставить его выше, и она получает нажмите на первый пытаться. Но теперь Listview не теряет фокус при первом нажатии, а затем щелкнет нижний колонтитул.
Делать это работает и получает щелчок, но тогда ListView фокус не ведет себя должным образом (не получает невыбранным при сноска нажатия). Нижний колонтитул также не удерживается в фокусе, и когда я перехожу к следующему действию, мой чек, чтобы проверить, был ли выбран элемент, дает ошибку. – johntzan
Возможно, у вашего нижнего колонтитула значение «GONE» видимо по умолчанию. – GIGAMOLE
После некоторого тестирования только список не терял фокус на щелчке нижнего колонтитула. поэтому нижний колонтитул корректно ведет себя, за исключением того, что список не теряет фокус на его щелчке. Последнее добавление, которое вы добавили, дает мне возможность не разрешать методы для всех методов v.getTag(). – johntzan