StickyListHeaders和MergeAdapter [英] StickyListHeaders and MergeAdapter

查看:118
本文介绍了StickyListHeaders和MergeAdapter的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经得到了我想要设置一个由三个不同的布局的布局合并成一个。我有两个RelativeLayouts作为前两个项目和一个列表适配器作为第三。之所以使用MergeAdapter是因为我想整个页面滚动,但我想在整个布局(第二RelativeLayout的),第二个项目总粘到上面。所以我尝试使用 StickyListHeaders图书馆来完成它。

它似乎并不像它太广泛尚未使用,即使它的想​​法是真棒。不管怎么说,有两种方法我有我的名单适配器,在这种情况下是一个MergeAdapter覆盖。我一直得到一个NullPointerException异常,但在那里我的code,它的发生不告诉我。因此,如果有人使用库,更具体地说,使用带有MergeAdapter图书馆有经验,你能告诉我,我做错了什么?这里的code为我MergeAdapter。

 私有类ProfileMergeAdapter扩展MergeAdapter实现StickyListHeadersAdapter {    @覆盖
    公共查看getHeaderView(INT位置,查看convertView,父母的ViewGroup){        LayoutInflater nameInflater =(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView =(RelativeLayout的)nameInflater.inflate(R.layout.name_line,NULL);
        profilePhotoBottom =(ImageView的)convertView.findViewById(R.id.profile_pic_bottom);
        TextView中的userName =(TextView中)convertView.findViewById(R.id.userName);
        userName.setText(Utility.userName);
        返回convertView;
    }    @覆盖
    众长getHeaderId(INT位置){
        返回1;
    }}

和这里的logcat的:

  20 01-13:39:21.237:W / dalvikvm(4917):主题ID = 1:螺纹未捕获的异常退出(组= 0x40de5930)
01-13 20:39:21.245:E / AndroidRuntime(4917):致命异常:主要
01-13 20:39:21.245:E / AndroidRuntime(4917):显示java.lang.NullPointerException
01-13 20:39:21.245:E / AndroidRuntime(4917):在android.widget.RelativeLayout.onMeasure(RelativeLayout.java:523)
01-13 20:39:21.245:E / AndroidRuntime(4917):在android.view.View.measure(View.java:15513)
01-13 20:39:21.245:E / AndroidRuntime(4917):在com.emilsjolander.components.stickylistheaders.StickyListHeadersListView.measureHeader(StickyListHeadersListView.java:242)
01-13 20:39:21.245:E / AndroidRuntime(4917):在com.emilsjolander.components.stickylistheaders.StickyListHeadersListView.scrollChanged(StickyListHeadersListView.java:284)
01-13 20:39:21.245:E / AndroidRuntime(4917):在com.emilsjolander.components.stickylistheaders.StickyListHeadersListView.onScroll(StickyListHeadersListView.java:269)
01-13 20:39:21.245:E / AndroidRuntime(4917):在android.widget.AbsListView.invokeOnItemScrollListener(AbsListView.java:1340)
01-13 20:39:21.245:E / AndroidRuntime(4917):在android.widget.ListView.layoutChildren(ListView.java:1753)
01-13 20:39:21.245:E / AndroidRuntime(4917):在android.widget.AbsListView.onLayout(AbsListView.java:1994)
01-13 20:39:21.245:E / AndroidRuntime(4917):在android.view.View.layout(View.java:14003)
01-13 20:39:21.245:E / AndroidRuntime(4917):在android.view.ViewGroup.layout(ViewGroup.java:4375)
01-13 20:39:21.245:E / AndroidRuntime(4917):在android.widget.FrameLayout.onLayout(FrameLayout.java:448)
01-13 20:39:21.245:E / AndroidRuntime(4917):在android.view.View.layout(View.java:14003)
01-13 20:39:21.245:E / AndroidRuntime(4917):在android.view.ViewGroup.layout(ViewGroup.java:4375)
01-13 20:39:21.245:E / AndroidRuntime(4917):在android.widget.FrameLayout.onLayout(FrameLayout.java:448)
01-13 20:39:21.245:E / AndroidRuntime(4917):在android.view.View.layout(View.java:14003)
01-13 20:39:21.245:E / AndroidRuntime(4917):在android.view.ViewGroup.layout(ViewGroup.java:4375)
01-13 20:39:21.245:E / AndroidRuntime(4917):在android.widget.FrameLayout.onLayout(FrameLayout.java:448)
01-13 20:39:21.245:E / AndroidRuntime(4917):在android.view.View.layout(View.java:14003)
01-13 20:39:21.245:E / AndroidRuntime(4917):在android.view.ViewGroup.layout(ViewGroup.java:4375)


解决方案

感谢您的答复马克。我想通了,还挺。我猜的东西是扭曲我的layout_width和layout_height在我的XML列表项之一,并改变他们周围没有工作。于是我改变了项目的高度和宽度使用的LayoutParams中code。

I've got a layout that I'm trying to set up that is comprised of three different layouts merged into one. I have two RelativeLayouts as the first two items and a list adapter as the third. The reason for using MergeAdapter is because I want the entire page to scroll, but I want the second total item in the entire layout (the second RelativeLayout) to stick to the top. So I'm trying to use the StickyListHeaders Library to accomplish it.

It doesn't seem like it's too widely used yet, even though the idea of it is awesome. Anyways, There are two methods I have to override in my list adapter, which in this case is a MergeAdapter. I keep getting a NullPointerException, but it doesn't tell me where in my code it's happening. So if anyone has experience using the library, and more specifically using the library with MergeAdapter, could you tell me what I'm doing wrong? Here's the code for my MergeAdapter.

private class ProfileMergeAdapter extends MergeAdapter implements StickyListHeadersAdapter{

    @Override
    public View getHeaderView(int position, View convertView, ViewGroup parent) {

        LayoutInflater nameInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = (RelativeLayout) nameInflater.inflate(R.layout.name_line, null);
        profilePhotoBottom = (ImageView) convertView.findViewById(R.id.profile_pic_bottom);
        TextView userName = (TextView) convertView.findViewById(R.id.userName);
        userName.setText(Utility.userName);
        return convertView;
    }

    @Override
    public long getHeaderId(int position) {
        return 1;
    }

}

And here's the logcat:

01-13 20:39:21.237: W/dalvikvm(4917): threadid=1: thread exiting with uncaught exception (group=0x40de5930)
01-13 20:39:21.245: E/AndroidRuntime(4917): FATAL EXCEPTION: main
01-13 20:39:21.245: E/AndroidRuntime(4917): java.lang.NullPointerException
01-13 20:39:21.245: E/AndroidRuntime(4917):     at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:523)
01-13 20:39:21.245: E/AndroidRuntime(4917):     at android.view.View.measure(View.java:15513)
01-13 20:39:21.245: E/AndroidRuntime(4917):     at com.emilsjolander.components.stickylistheaders.StickyListHeadersListView.measureHeader(StickyListHeadersListView.java:242)
01-13 20:39:21.245: E/AndroidRuntime(4917):     at com.emilsjolander.components.stickylistheaders.StickyListHeadersListView.scrollChanged(StickyListHeadersListView.java:284)
01-13 20:39:21.245: E/AndroidRuntime(4917):     at com.emilsjolander.components.stickylistheaders.StickyListHeadersListView.onScroll(StickyListHeadersListView.java:269)
01-13 20:39:21.245: E/AndroidRuntime(4917):     at android.widget.AbsListView.invokeOnItemScrollListener(AbsListView.java:1340)
01-13 20:39:21.245: E/AndroidRuntime(4917):     at android.widget.ListView.layoutChildren(ListView.java:1753)
01-13 20:39:21.245: E/AndroidRuntime(4917):     at android.widget.AbsListView.onLayout(AbsListView.java:1994)
01-13 20:39:21.245: E/AndroidRuntime(4917):     at android.view.View.layout(View.java:14003)
01-13 20:39:21.245: E/AndroidRuntime(4917):     at android.view.ViewGroup.layout(ViewGroup.java:4375)
01-13 20:39:21.245: E/AndroidRuntime(4917):     at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
01-13 20:39:21.245: E/AndroidRuntime(4917):     at android.view.View.layout(View.java:14003)
01-13 20:39:21.245: E/AndroidRuntime(4917):     at android.view.ViewGroup.layout(ViewGroup.java:4375)
01-13 20:39:21.245: E/AndroidRuntime(4917):     at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
01-13 20:39:21.245: E/AndroidRuntime(4917):     at android.view.View.layout(View.java:14003)
01-13 20:39:21.245: E/AndroidRuntime(4917):     at android.view.ViewGroup.layout(ViewGroup.java:4375)
01-13 20:39:21.245: E/AndroidRuntime(4917):     at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
01-13 20:39:21.245: E/AndroidRuntime(4917):     at android.view.View.layout(View.java:14003)
01-13 20:39:21.245: E/AndroidRuntime(4917):     at android.view.ViewGroup.layout(ViewGroup.java:4375)

解决方案

Thanks for the response Mark. I figured it out, kinda. I guess something was screwy with my layout_width and layout_height in my xml for one of the list items and changing them around didn't work. So I changed the the item height and width using LayoutParams in the code.

这篇关于StickyListHeaders和MergeAdapter的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆