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