Android 删除listview标题和第一项之间的分隔符

Android 删除listview标题和第一项之间的分隔符,android,android-listview,header,footer,divider,Android,Android Listview,Header,Footer,Divider,从我问题的标题来看,我的问题很清楚。我有一个自定义列表视图、一个标题和一些项目。当然,我在所有项目之间添加了分隔符。我唯一不想要的是标题和第一项之间的分隔符。 但是,下面的代码不起作用。。我还想知道这条线的确切工作 list.setHeaderDividerEnabled(false); 我已经搜索和尝试了很多,也访问了这个链接,但没有运气 提前谢谢 更新 public class ListView extends android.widget.ListView { private On

从我问题的标题来看,我的问题很清楚。我有一个自定义列表视图、一个标题和一些项目。当然,我在所有项目之间添加了分隔符。我唯一不想要的是标题和第一项之间的分隔符。 但是,下面的代码不起作用。。我还想知道这条线的确切工作

list.setHeaderDividerEnabled(false);
我已经搜索和尝试了很多,也访问了这个链接,但没有运气

提前谢谢

更新

public class ListView extends android.widget.ListView {

private OnScrollListener onScrollListener;
private Onscroll onscrollObj;

public ListView(Context context) {
    super(context);
    onCreate(context, null, null);
}

public ListView(Context context, AttributeSet attrs) {
    super(context, attrs);
    onCreate(context, attrs, null);
}

public ListView(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
    onCreate(context, attrs, defStyle);
}

@SuppressWarnings("UnusedParameters")
private void onCreate(Context context, AttributeSet attrs, Integer defStyle) {
    setListeners();
}

private void setListeners() {
    super.setOnScrollListener(new OnScrollListener() {

        private int oldTop;
        private int oldFirstVisibleItem;

        @Override
        public void onScrollStateChanged(AbsListView view, int scrollState) {
            if (onScrollListener != null) {
                onScrollListener.onScrollStateChanged(view, scrollState);
            }
        }

        @Override
        public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
            if (onScrollListener != null) {
                onScrollListener.onScroll(view, firstVisibleItem, visibleItemCount, totalItemCount);
            }

            if (onscrollObj != null) {
                onDetectedListScroll(view, firstVisibleItem);
            }
        }

        private void onDetectedListScroll(AbsListView absListView, int firstVisibleItem) {
            View view = absListView.getChildAt(0);
            int top = (view == null) ? 0 : view.getTop();

            if (firstVisibleItem == oldFirstVisibleItem) {
                if (top > oldTop) {
                    onscrollObj.onUpScrolling();
                } else if (top < oldTop) {
                    onscrollObj.onDownScrolling();
                }
            } else {
                if (firstVisibleItem < oldFirstVisibleItem) {
                    onscrollObj.onUpScrolling();
                } else {
                    onscrollObj.onDownScrolling();
                }
            }

            oldTop = top;
            oldFirstVisibleItem = firstVisibleItem;
        }
    });
}

@Override
public void setOnScrollListener(OnScrollListener onScrollListener) {
    this.onScrollListener = onScrollListener;
}

public void setOnDetectScrollListener(Onscroll onDetectScrollListener) {
    this.onscrollObj = onDetectScrollListener;
}
}
公共类ListView扩展了android.widget.ListView{
私有OnScrollListener OnScrollListener;
私人Onscroll onscrollObj;
公共列表视图(上下文){
超级(上下文);
onCreate(上下文,null,null);
}
公共列表视图(上下文、属性集属性){
超级(上下文,attrs);
onCreate(上下文、属性、空);
}
公共列表视图(上下文上下文、属性集属性、int-defStyle){
超级(上下文、属性、定义样式);
onCreate(上下文、属性、定义样式);
}
@SuppressWarnings(“未使用的参数”)
private void onCreate(上下文上下文、属性集属性、整数定义样式){
setListeners();
}
私有void setListeners(){
super.setOnScrollListener(新的OnScrollListener(){
私家车;
私有int oldFirstVisibleItem;
@凌驾
公共无效onScrollStateChanged(AbsListView视图,int scrollState){
if(onScrollListener!=null){
onScrollListener.onScrollStateChanged(视图,滚动状态);
}
}
@凌驾
public void onScroll(AbsListView视图、int firstVisibleItem、int visibleItemCount、int totalItemCount){
if(onScrollListener!=null){
onScrollListener.onScroll(视图、firstVisibleItem、visibleItemCount、totalItemCount);
}
如果(onscrolobj!=null){
onDetectedListScroll(视图,firstVisibleItem);
}
}
私有void onDetectedListScroll(AblistView AblistView,int firstVisibleItem){
视图=absListView.getChildAt(0);
int top=(view==null)?0:view.getTop();
如果(firstVisibleItem==oldFirstVisibleItem){
如果(顶部>顶部){
onscrolobj.onUpScrolling();
}否则如果(顶部<旧顶部){
onscrollObj.onDownScrolling();
}
}否则{
if(firstVisibleItem

或者这样做,,
不要添加listview.headerview(视图);
相反,在xml设计中添加一个header视图,并执行如下操作
不要在标头和Listview之间提供空间。

您可以通过以下方法删除所有分隔符:android:dividerHeight=“0dp”android:divider=“@null”现在为列表视图的每个项目添加一个
视图
,该视图具有
宽度
相等
匹配参数
,以及底部的
高度
相等
1dp
我使用xml中的属性“android:HeaderDividerEnabled=”false“,而且效果很好。如果您想自定义标题和第一项之间的分隔符,我想您可以在标题布局的底部做一些事情来假装它是分隔符

我的代码:

Main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"     android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">


<ListView
    android:headerDividersEnabled="false"
    android:dividerHeight="5dp"
    android:divider="@color/white"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/my_list_view"/>


</RelativeLayout>

list_item.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="fill_parent"
android:orientation="horizontal" >

<ImageView
    android:id="@+id/img"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_margin="3px"
    />
<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    >
    <TextView
        android:id="@+id/title"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textSize="16sp"
        />
    <TextView
        android:id="@+id/info"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textSize="10sp"
        />
</LinearLayout>

</LinearLayout>

MainActivity.java

public class MainActivity extends AppCompatActivity {
@Bind(R.id.my_list_view)
ListView listView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ButterKnife.bind(this);
    initviews();
}

private void initviews() {
    View view = View.inflate(this,R.layout.headerview,null);
    listView.addHeaderView(view);
    SimpleAdapter adapter = new SimpleAdapter(this, getData(),
            R.layout.list_item, new String[] { "img", "title", "info" },
            new int[] { R.id.img, R.id.title, R.id.info });
    listView.setAdapter(adapter);

}


private List<Map<String, Object>> getData() {
    List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
    Map<String, Object> map = new HashMap<String, Object>();
    map.put("img", R.mipmap.ic_launcher);
    map.put("title", "php");
    map.put("info", "for server");
    list.add(map);

    map = new HashMap<String, Object>();
    map.put("img",  R.mipmap.ic_launcher);
    map.put("title", "java");
    map.put("info", "stable");
    list.add(map);

    map = new HashMap<String, Object>();
    map.put("img",  R.mipmap.ic_launcher);
    map.put("title", "C++");
    map.put("info", "cool and hard");
    list.add(map);

    map = new HashMap<String, Object>();
    map.put("img",  R.mipmap.ic_launcher);
    map.put("title", "python");
    map.put("info", "pretty clean");
    list.add(map);

    map = new HashMap<String, Object>();
    map.put("img",  R.mipmap.ic_launcher);
    map.put("title", "hello");
    map.put("info", "every thing");
    list.add(map);

    map = new HashMap<String, Object>();
    map.put("img",  R.mipmap.ic_launcher);
    map.put("title", "world");
    map.put("info", "hello world");
    list.add(map);

    return list;
}

}
public类MainActivity扩展了AppCompatActivity{
@绑定(R.id.my\u列表\u视图)
列表视图列表视图;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
把(这个)绑起来;
initviews();
}
私有void initviews(){
视图=视图。充气(此,R.layout.headerview,空);
listView.addHeaderView(视图);
SimpleAdapter adapter=新的SimpleAdapter(这个,getData(),
R.layout.list_项,新字符串[]{“img”,“title”,“info”},
新的int[]{R.id.img,R.id.title,R.id.info});
setAdapter(适配器);
}
私有列表getData(){
列表=新的ArrayList();
Map Map=newhashmap();
map.put(“img”,R.mipmap.ic_启动器);
map.put(“title”、“php”);
地图放置(“信息”,“服务器”);
列表。添加(地图);
map=新的HashMap();
map.put(“img”,R.mipmap.ic_启动器);
map.put(“title”、“java”);
地图放置(“信息”、“稳定”);
列表。添加(地图);
map=新的HashMap();
map.put(“img”,R.mipmap.ic_启动器);
map.put(“title”,“C++”);
地图放置(“信息”,“酷和硬”);
列表。添加(地图);
map=新的HashMap();
map.put(“img”,R.mipmap.ic_启动器);
map.put(“title”、“python”);
地图放置(“信息”,“相当干净”);
列表。添加(地图);
map=新的HashMap();
map.put(“img”,R.mipmap.ic_启动器);
地图。放置(“标题”,“你好”);
地图。放置(“信息”,“每件事”);
列表。添加(地图);
map=新的HashMap();
map.put(“img”,R.mipmap.ic_启动器);
地图放置(“标题”、“世界”);
地图放置(“信息”,“你好世界”);
列表。添加(地图);
退货清单;
}
}

通过使用 回收视图。移除装饰(分割装饰); .. .. .. 这基本上消除了任何种类的物品装饰。
(你们可以通过点击ctrl+右键单击PC上的项目装饰来观看项目装饰)

这对删除listview标题和第一个项目之间的分隔符有什么帮助?与其以编程方式进行设置,不如在xml文件中对其进行更改,只需尝试help@0X0nosugar.I不知道
public class MainActivity extends AppCompatActivity {
@Bind(R.id.my_list_view)
ListView listView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ButterKnife.bind(this);
    initviews();
}

private void initviews() {
    View view = View.inflate(this,R.layout.headerview,null);
    listView.addHeaderView(view);
    SimpleAdapter adapter = new SimpleAdapter(this, getData(),
            R.layout.list_item, new String[] { "img", "title", "info" },
            new int[] { R.id.img, R.id.title, R.id.info });
    listView.setAdapter(adapter);

}


private List<Map<String, Object>> getData() {
    List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
    Map<String, Object> map = new HashMap<String, Object>();
    map.put("img", R.mipmap.ic_launcher);
    map.put("title", "php");
    map.put("info", "for server");
    list.add(map);

    map = new HashMap<String, Object>();
    map.put("img",  R.mipmap.ic_launcher);
    map.put("title", "java");
    map.put("info", "stable");
    list.add(map);

    map = new HashMap<String, Object>();
    map.put("img",  R.mipmap.ic_launcher);
    map.put("title", "C++");
    map.put("info", "cool and hard");
    list.add(map);

    map = new HashMap<String, Object>();
    map.put("img",  R.mipmap.ic_launcher);
    map.put("title", "python");
    map.put("info", "pretty clean");
    list.add(map);

    map = new HashMap<String, Object>();
    map.put("img",  R.mipmap.ic_launcher);
    map.put("title", "hello");
    map.put("info", "every thing");
    list.add(map);

    map = new HashMap<String, Object>();
    map.put("img",  R.mipmap.ic_launcher);
    map.put("title", "world");
    map.put("info", "hello world");
    list.add(map);

    return list;
}

}