如何完全隐藏堆叠在CardView上的元素?

问题描述 投票:0回答:1
android layout
1个回答
0
投票

尝试使用以下代码

public class PlaylistAdapter extends BaseAdapter {
    private Context context;
    private ArrayList<String> items;

    public PlaylistAdapter(Context context, ArrayList<String> items) {
        this.context = context;
        this.items = filterItems(items);
    }

    private ArrayList<String> filterItems(ArrayList<String> originalItems) {
        ArrayList<String> filteredItems = new ArrayList<>();
        for (int i = 2; i <= 5 && i < originalItems.size(); i++) {
            filteredItems.add(originalItems.get(i));
        }
        return filteredItems;
    }

    @Override
    public int getCount() {
        return items.size();
    }

    @Override
    public Object getItem(int position) {
        return items.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View view = getLayoutInflater().inflate(R.layout.list_song, parent, false);

        CardView cardView = view.findViewById(R.id.cardview);

        //use this incase filterItems doesn't works
        // if (position < 2 || position > 5) {
        //     cardView.setVisibility(View.GONE);
        //     cardView.setPadding(0, 0, 0, 0);
        //     cardView.setLayoutParams(new LinearLayout.LayoutParams(0, 0));
        // }

        return view;
    }
}

一个名为 filterItems() 的新方法,它获取原始项目列表并返回包含索引 2 到 5(含)的项目的过滤列表。

更多建议参考链接

Android设置View.GONE不会“释放”listview中的空间

© www.soinside.com 2019 - 2024. All rights reserved.