Как изменить высоту элемента ListView? - PullRequest
0 голосов
/ 05 августа 2020

После щелчка по одному из элементов ListView я хочу изменить высоту элемента ListView, но не могу этого сделать.

@Override
public View getView(int i, View view, ViewGroup viewGroup) {
        view = inflter.inflate(R.layout.list_item, null);
        final ImageView icon = (ImageView) view.findViewById(R.id.GoodsIcon);
        final View finalView = view;
        icon.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                    finalView.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, dpToPx(250)));
            }
        });
   return finalView;
    }

Но если вы немного измените код, скрипт работает, но меняет высоту всего элемента ListView.

 @Override
    public View getView(int i, View view, ViewGroup viewGroup) {
            view = inflter.inflate(R.layout.list_item, null);
            view.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, dpToPx(250)));
       return view;
        }

Как изменить высоту элемента ListView после нажатия значка (ImageView).?

1 Ответ

0 голосов
/ 05 августа 2020

Вы можете использовать View.getChildAt (int idx) для получения определенного c представления. Вы можете получить только видимые элементы (он начинается с первого видимого элемента, если вам нужно получить первый видимый элемент, вы можете использовать ListView.getFirstVisiblePosition ()).

Например:

View view = mListView.getChildAt(index - mListView.getFirstVisiblePosition());

if(v == null)
   return;

view.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, dpToPx(250)));
...