При вызове onItemLongClickListener onItemClickListener также вызывается, хотя я возвращаю true в onItemLongClick - PullRequest
0 голосов
/ 29 августа 2018

Я не хочу звонить onItemClick, когда вызывается onItemLongClick. Я использую SlideAndDragListView и возвращаю true только в onItemLongClick.

matchedUsersListView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
        @Override
        public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { 
            InviteMatchedUsersFragment.this.onItemLongClick(parent,view,position,id);
            return true;
        }
    });

 @Override
    public void onItemLongClick(AdapterView<?> parent, View view, int position, long id) {  
        ImageView view1 = (ImageView) view.findViewById(position);
        matchedPassengersAdapter.onUserClick(view1, position);
    } 

В OnItemClick Я делаю это по-другому

@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    Log.d(LOG_TAG, "onMatchedUserSelection()");
    if(matchedPassengersAdapter.getSelectedPassengersCount() != 0)
    {
        ImageView view1 = (ImageView) view.findViewById(position);
        matchedPassengersAdapter.onUserClick(view1, position);
    }
    else {
          //onItemClickGoesHere
    }

}

@Override
    public void onItemLongClick(AdapterView<?> parent, View view, int position, long id) {  
        ImageView view1 = (ImageView) view.findViewById(position);
        matchedPassengersAdapter.onUserClick(view1, position);
    }  

1 Ответ

0 голосов
/ 29 августа 2018

Этот май тебе поможет

Ref: Установить прослушиватель длинного щелчка для просмотра списка

Ваш вопрос очень похож на этот , но похоже, что он не является точной копией.

Что вы заметили, так это то, что класс ListActivity не имеет переопределения метода специально для этого случая.

Чтобы добавить эту функцию в качестве переопределения метода, ваш класс должен реализовать интерфейс AdapterView.OnItemLongClickListener, а затем вы можете добавить переопределение метода onItemLongClick (), которое действует так же, как и переопределение метода onListItemClick (), которое у вас уже есть, но реагирует на длинные щелчки.

Просто убедитесь, что вы следуете инструкциям этого ответа , вы должны использовать android: longClickable = "true" в макете XML или вызвать listview.setLongClickable (true);

Ex

public class MainActivity extends ListActivity implements AdapterView.OnItemLongClickListener {

    ListView listview;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ListView listview = (ListView) findViewById(R.id.list);

        listview.setLongClickable(true);

    }

    @Override
    public boolean onItemLongClick(AdapterView<?> l, View v,
                                   final int position, long id) {

        Toast.makeText(this, "long clicked pos: " + position, Toast.LENGTH_LONG).show();

        return true;
    }

    protected void onListItemClick(ListView l, View v, final int position, long id) {
        super.onListItemClick(l, v, position, id);

        Toast.makeText(this, "short clicked pos: " + position, Toast.LENGTH_LONG).show();  

    }

 //....................
...