ListView.setFooterView(V)页脚变化不可见的ListView控件由VIewPager显示 [英] ListView.setFooterView(v) Footer change not visible In ListView displayed by VIewPager

查看:573
本文介绍了ListView.setFooterView(V)页脚变化不可见的ListView控件由VIewPager显示的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我称之为

listView.setFooterView(v)

,但没有变化是可见的。现在,我要补充的是ListView控件是添加到ViewPager视图(不是frament)内。

but no change is visible. Now I should add that the listView is inside a view (not a frament) that is added into a ViewPager.

所以保存列表视图查看认为寻呼机内。如果我来回切换视图之间,然后我看到的变化,而不是其他。到目前为止,我已经尝试了一切大部分包括整个ViewPager但仍没有显示失效。

So the View that holds the listView is inside the view pager. If I switch back and forth between the views then I see the change, but not otherwise. So far I have tried invalidating most everything including the whole ViewPager but still it does not show.

在活动布局我有:

 <android.support.v4.view.ViewPager
android:id="@+id/viewPager"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@color/white"
android:layout_weight="1"
/>

然后,我有三个页面每个看起来是这样的:

Then I have three pages each looks like this:

 <?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:id="@+id/listListDisplayer1"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<ListView
    android:id="@+id/listMyList1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:cacheColorHint="#00000000"
    android:fastScrollEnabled="true" />

<include layout="@layout/advertisement" />

</FrameLayout>

所以,我的看法有像上面并创造他们的onCreate马上()的主要活动。

So I have views like above and create them right away in onCreate() of the main activity.

 MyPageAdapter extends ViewPagerAdapter{

      int getCount() {
           return 3;
      }

       public Object instantiateItem(View collection, int position) {

        View view=null;

        switch (position) {
            case 0:
                view = getMyView1();
                break;
            case 1:
                view = getMyView2();
                break;
            case 2:
                view = getMyView2();
                break;
        }

        if ((view != null) && ((ViewPager) collection).findViewById(view.getId()) == null)
        {

          ((ViewPager) collection).addView(view, 0);
        }

        return view;
    }


    private View getMyView1()
    {   
        return mMyView1;
    }


    private View getMyView2()
    {
        return  mMyView2;
    }



    private View getMyView3()
    {
        return mMyView3;
    }


    @Override
    public void destroyItem(View view, int arg1, Object arg2) {
        ((ViewPager) view).removeView((View) arg2);

    }

    @Override
    public void finishUpdate(View view) {


    }

    @Override
    public boolean isViewFromObject(View view, Object arg1) {
        return view == ((View) arg1);

    }

    @Override
    public void restoreState(Parcelable parcel, ClassLoader classLoader) {
    }

    @Override
    public Parcelable saveState() {

        return null;
    }

    @Override
    public void startUpdate(View view) {


    }


}

我将几行更新....

I will update with a few more lines ....

     private class PageChangeListener implements OnPageChangeListener {

    @Override
    public void onPageScrollStateChanged(int scrollState) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onPageScrolled(int arg0, float arg1, int arg2) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onPageSelected(int pageNum) {
        Logout.debug("pageSelected :"+pageNum); 
        if (pageNum == 0)
        {
            prepareMyView1();
        }
        else if (pageNum == 2)
        {
           prepareMyView2();
        }
        else if (pageNum == 3)
        {
            prepareMyView3();
        }
    }

}

    private void prepareMyView1()   // each is like this setting adapter on ListView
{   
    setMyList1Adapter();
}

     private void prepareMyView2()   // each is like this setting adapter on ListView
{   
    setMyList2Adapter();
}

所以,我想在addFooterView更改来实现|立即可见。

So I want a change in addFooterView to be effected | visible immediately.

推荐答案

解决这个问题的解决办法是先添加页脚视图,然后设置适配器。如果适配器首先设置,然后页脚视图添加它现在显示。 removeFooterView(ⅴ)可以在不然而重置适配器一起使用。

The solution to this is to first add the footer view and then set the adapter. if the adapter is set first and then the footer view is added it does now show up. removeFooterView(v) can be used without resetting the adapter however.

这篇关于ListView.setFooterView(V)页脚变化不可见的ListView控件由VIewPager显示的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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