Android adapter 中动态设置控件的方法

时间:2025-01-27 08:23:38

这里简单介绍动态设置listview中每一项的高度的方法。
如果直接在adapter中获取控件的LayoutParams会报空指针异常。
比较靠谱的方法是在item布局文件中多嵌套一层LinearLayout:
如下:

listview中加载的item布局:

<LinearLayout
    xmlns:android="/apk/res/android"
    android:id="@+id/slid_item"
    android:orientation="vertical"
    android:background="#bcaaa4"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <LinearLayout
        android:id="@+id/item_content"
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <TextView
            android:textSize="24sp"
            android:text="note"
            android:textColor="#fff"
            android:gravity="center"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
    </LinearLayout>
</LinearLayout>

多嵌套一层布局后就可以在适配器中针对第二层的布局动态设置了。
即(以下是我测试时的代码):

 @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        convertView = LayoutInflater.from(context).inflate(R.layout.slid_menu_item,null);
        LinearLayout l = (LinearLayout) convertView.findViewById(R.id.item_content);
        LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) l.getLayoutParams();
        layoutParams.height = (int) list.get(position)/5;
        l.setLayoutParams(layoutParams);
        return convertView;
    }