动态更改listview的分隔符高度?

5

这个问题已经在这里链接上被提出。

同时我想澄清这个问题。我有一个Listview中的10个列表项,我希望每个列表项的dividerheight都不同,比如第一个项目应该是setDividerHeight(2),第二个应该是setDividerHeight(4)等等。

我制作了一个自定义的Adapeter,在其中设置了我的布局。

public View getView(int position, View convertView, ViewGroup parent) {
    View v = super.getView(position, convertView, parent);

    if(position ==2)
    {
        if (v != convertView && v != null) {
            ViewHolder holder = new ViewHolder();

            // TextView tv = (TextView) v.findViewById(R.id.artist_albums_textview);
            // holder.albumsView = tv;

            convertView = mInflater.inflate(R.layout.jazz_artist_list_item, null);
            holder.albumsView = (TextView)convertView.findViewById(R.id.artist_albums_textview);

            //   lv.setDividerHeight(8);
            v.setTag(holder);
        }
    }
    else
    {
        if (v != convertView && v != null) {
            ViewHolder holder = new ViewHolder();

            convertView = mInflater.inflate(R.layout.jazz_artist_list_item, null);
            holder.albumsView = (TextView)convertView.findViewById(R.id.artist_albums_textview);

            //  lv.setDividerHeight(2);
            v.setTag(holder);
        }
    }
}

但是似乎它没有正常工作。

对于如何动态设置Listview分隔符高度有什么想法吗?

祝好, Laxmikant

2个回答

7
//set Divider as you like   

listView.setDivider((Drawable) getResources().getDrawable(R.drawable.orange));

//then set the height dynamically

listView.setDividerHeight(1);

在您的Activity中,而不是Adapter类中,有一个ListView。如果要实现您在问题中所写的内容,请按照以下步骤操作:
让每个ListView项的布局包含一个TextView和一个View(每个项之后都有分隔符),然后根据getView()方法中得到的位置参数更改View的高度。
ListView项布局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:padding="5dp" >
    <TextView
        android:id="@+id/label"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@id/logo"
        android:padding="5dp"
        android:textSize="14dp" >
    </TextView>
    <View
        android:id="@+id/view"
        android:layout_width="fill_parent"
        android:layout_height="1dp"
        android:layout_below="@id/label"
        android:background="@drawable/orange" />
</RelativeLayout>

现在在适配器类中,你的 ViewHolder 包含 TextView 和 View。
因此,
Holder.View = (View)convertView.findViewById(R.id.view);
if(position == 0){
     (Holder.View).setHeight(2);
}

等等。


嗯,我正在开发一个基于拖放的Listview,所以在我的情况下,我无法添加作为ListItem一部分的分隔符,我想要一个更像Listviews分隔符的单独分隔符;-) - kendrelaxman
我尝试了这个解决方案,它几乎给了我想要的结果,但当我滚动时,视图的高度会发生变化。我猜这是由于getview中的convertview导致的,有没有解决办法来处理这个问题? - kendrelaxman
我认为@kendrelaxman在问题中询问的不是那个。他想为ListView中的不同视图的行设置不同的dividerHeight。 - JaydeepW

0
稍作修改,对我有用了(View中没有setHeight()方法?),谢谢:
Holder.View = (View)convertView.findViewById(R.id.view);
if(position == 0){
  (Holder.View).getLayoutParams().height = *your desired height e.g. 20*;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接