gpt4 book ai didi

android - 为 ListView 中的每个元素设置不同的分隔线颜色

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:02:41 27 4
gpt4 key购买 nike

我想要一个列表,列表元素之间有不同的分隔符。我使用这段代码定义了一个高度为 1 的白色分隔线:

_listView.setDivider(new ColorDrawable(Color.WHITE));
_listView.setDividerHeight(1);

但是它将所有元素的分隔线设置为白色,我只希望其中一些元素为白色而其他元素为不同颜色。

我该怎么做?

最佳答案

将分隔符的高度设置为 0,并在项目布局中实现一个高度为 1 的 View ,并在每次构建 View 时根据列表项更改其颜色。

这是一个 XML 布局示例:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >

<TextView
android:id="@+id/text"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />

<View
android:id="@+id/divider"
android:layout_width="fill_parent"
android:layout_height="1dp"
android:background="#FFFFFFFF" />

</LinearLayout>

这就是您在适配器中更改颜色的方式:

public class MyAdapter extends BaseAdapter {
/** List of items to show */
private ArrayList<String> items = new ArrayList<String>();
private Context context;
private int color[];

public OffersAdapter(Context c, ArrayList<String> items, int color[])
{
super();
this.context = c;
this.items = items;
this.color = color;
}

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

public Object getItem(int position) {
return null;
}

public long getItemId(int position) {
return 0;
}

public View getView(final int position, View convertView, ViewGroup parent) {
final ViewHolder viewHolder;

if(null == convertView)
{
LayoutInflater inflater = LayoutInflater.from(context);
convertView = inflater.inflate(R.layout.list_item, parent, false);

viewHolder.text = (TextView) convertView.findViewById(R.id.text);
viewHolder.divider = (View) convertView.findViewById(R.id.divider);

convertView.setTag(viewHolder);
} else {
//Retrieve the current view
viewHolder = (ViewHolder) convertView.getTag();
}

//This is where you chance the divider color based on the item
viewHolder.divider.setBackgroundColor(color[position]);

viewHolder.text.setText(items.get(position));

return convertView;
}

//Holds the current view
private static class ViewHolder {
public TextView text;
public View divider;
}
}

其中 int color[] 是您要使用的颜色列表。

更多关于 ViewHolder read here .

关于android - 为 ListView 中的每个元素设置不同的分隔线颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12934467/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com