Как отключить onLongClick в ListView и наследовать onLongClick из родительского представления?

#android #listview

#Android #listview

Вопрос:

У меня есть представление, которое выглядит примерно так:

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@ id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:longClickable="true"
    tools:context="com.narudzba.myapplication.MainActivity">
    <ListView
        android:id="@ id/list_item"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:clickable="false"
        android:duplicateParentState="true"
        android:focusableInTouchMode="false" />
</LinearLayout>
  

и моя деятельность выглядит примерно так:

 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);
    LinearLayout linearLayout = (LinearLayout) findViewById(R.id.activity_main);
    linearLayout.setOnLongClickListener(new View.OnLongClickListener() {
        @Override
        public boolean onLongClick(View v) {
            Toast.makeText(getApplicationContext(), "HELLO", Toast.LENGTH_LONG).show();
            return true;
        }
    });

    listView = (ListView) findViewById(R.id.list_item);
    listView.setAdapter(new ArrayAdapter<Message>(getApplicationContext(), R.layout.activity_main));

}
  

В моем LinearLayout есть событие onLongPressed (), которое не запускается в области ListView, и я не знаю почему? Я попытался установить listview интерактивным на false, установить duplicateStateParent на true, удалить фокус из ListView… но это не работает.
Есть какие-нибудь советы по устранению этого триггера события onLongPressed в области ListView?

Комментарии:

1. Привет, Марко, да, конечно, это не так, ListViews работают как контейнеры для элементов списка, у этих элементов есть свойство click, поэтому отключение свойства container view мало что даст! К вашему сведению, пустые просмотры списков по умолчанию недоступны для просмотра. Чтобы помочь вам в этом, нам нужно знать причину добавления пустого ListView и планируете ли вы добавлять элементы динамически, если да, я думаю, у меня есть ответ, если нет! в чем тогда цель представления?

2. Мой listview будет динамически заполняться (ArrayAdapter) элементами списка. Основная причина, по которой я хочу сделать, заключается в том, что я хочу реализовать onLongClick во всем представлении LinearLayout.

3. затем вам просто нужно установить для свойства clickable каждого элемента значение false; что-то похожее на это: public void AddItems(View v) { v.setClickable(false); blabla……}