动态更改listview的分隔高度?

时间:2012-08-08 05:30:07

标签: android listview dynamic height divider

此问题已在a link

中提出

我还要澄清这个问题 我在Listview中有10个列表项 我希望每个列表项的deviderheight与第一个项目的setDividerheight(2)不同,对于第二个setDividerheight(4)这样的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); } } } 就像这样..

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

{{1}}

但这似乎无法正常运作。

关于如何动态设置Listview的分隔高度

的任何想法

此致 Laxmikant

2 个答案:

答案 0 :(得分:6)

//set Divider as you like   

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

//then set the height dynamically

listView.setDividerHeight(1);

在您的Activity中有ListView。不是Adapter类。

如果你在问题中写的到底是什么。这样做:

让每个listView项目布局包含一个TextView和一个View(每个项目后面的分隔符),然后根据你在getView()方法中获得的位置参数来改变视图的高度。

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);
}

等等。

答案 1 :(得分:0)

上面稍微调整一下让它适合我(View中没有setHeight()方法?),谢谢:

Holder.View = (View)convertView.findViewById(R.id.view);
if(position == 0){
  (Holder.View).getLayoutParams().height = *your desired height e.g. 20*;
}