Установить специальный элемент gridView не кликабельным - PullRequest
0 голосов
/ 30 августа 2018

Я занимаюсь разработкой игры на память с android studio и использую gridView для настройки карточек в игровой активности. это код для моего адаптера gridView:

public class CardGridViewAdapter extends BaseAdapter {

    private Context mContext;
    private int mCardId;

    public CardGridViewAdapter(Context context, int cardsIds) {
        mContext = context;
        mCardId = cardsIds;
    }

    public int getCount() {
        return mContext.getResources().getInteger(R.integer.num_of_cards);
    }

    public Object getItem(int position) {
        return null;
    }

    public long getItemId(int position) {
        return 0;
    }

    public View getView(int position, View convertView, ViewGroup parent) {

        ImageView imageView;

        if (convertView == null) {
            imageView = new ImageView(mContext);
            imageView.setLayoutParams(new ViewGroup.LayoutParams(300, 300));
            imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
            imageView.setPadding(8, 8, 8, 8);
        } else {
            imageView = (ImageView) convertView;
        }

        imageView.setImageResource(mCardId);
        return imageView;
    }
}

Мне нужно, чтобы после щелчка каждый элемент стал недоступным для клика. Вот метод onItemCLick:

@Override
    public void onItemClick(AdapterView<?> adapterView, View cardView, int position, long l) {

        ImageView cardImageView = (ImageView)cardView;

        GameGraphics.RevealCard(cardImageView, mCardsIdsArray[position]);

        if(mNumOfClicks++ % 2 == 0){
            mFirstCard = cardImageView;
        }else{
            mSecondCard = cardImageView;

            mCardsGridView.setEnabled(false);

            delayHandler.postDelayed(new Runnable() {
                @Override
                public void run() {
                    checkForMatch();
                }
            }, 1100);
        }
    }

Я пробовал "cardView.setClickable (false);" но это не сработало. Что я могу сделать здесь?

1 Ответ

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

В вашем пользовательском BaseAdapter переопределите метод isEnabled

@ Override public boolean isEnabled (int position) { return false; // Здесь установите ваше условие }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...