Установить макет, видимый, когда элемент ListView имеет фокус - PullRequest
1 голос
/ 16 мая 2019

У меня есть ListView и я хочу установить фокус на выбранном элементе. ListView содержит 3 TextView на строку. Я хочу, чтобы два LinearLayout были видны при выборе элемента.

Я уже пробовал:

mListView.setOnFocusChangeListener(new View.OnFocusChangeListener() {
            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                if(hasFocus) {
                    ((LinearLayout) findViewById(R.id.ll_btn_manipulation_lv)).setVisibility(View.VISIBLE);
                    ((LinearLayout) findViewById(R.id.ll_tv_username)).setVisibility(View.VISIBLE);
                }
            }
        });

Но это не работает. Поэтому я попытался добавить следующий код перед setOnFocusChangeListener :

mListView.setItemsCanFocus(true);

Это тоже не работает.

Итак, я попытался сделать это: (это тоже не работает)

 for(int i = 0 ; i < mListView.getChildCount() ; ++i) {
            TextView tv1 = (TextView) mListView.findViewById(R.id.textView1);
            TextView tv2 = (TextView) mListView.findViewById(R.id.textView2);
            TextView tv3 = (TextView) mListView.findViewById(R.id.textView3);

            View.OnFocusChangeListener ofcl = new View.OnFocusChangeListener() {
                @Override
                public void onFocusChange(View v, boolean hasFocus) {
                    if(hasFocus) {
                        ((LinearLayout) findViewById(R.id.ll_btn_manipulation_lv)).setVisibility(View.VISIBLE);
                        ((LinearLayout) findViewById(R.id.ll_tv_username)).setVisibility(View.VISIBLE);
                    }
                }
            };

            tv1.setOnFocusChangeListener(ofcl);
            tv2.setOnFocusChangeListener(ofcl);
            tv3.setOnFocusChangeListener(ofcl);
        }

Поэтому моя цель - сделать два LinearLayout видимыми после нажатия на элемент.

У вас есть идеи? Спасибо

...