为什么textview不能在UI线程上更新?

时间:2015-10-12 18:43:33

标签: android view ui-thread

我试图从github修改SlidingTabLayout。我每次滚动选项卡时都会尝试更改图片。即尝试使当前选项卡以不同图像突出显示。所以我尝试修改onPageSelected()方法来重绘整个选项卡菜单。但是标签菜单没有更新,我尝试了不同的方法但没有任何反应。

public void onPageSelected(int position) {
        final PagerAdapter mAdapter = mPagerAdapter;
        mPagerAdapter.current = position;
        for(int i = 0; i < mAdapter.getCount(); i++) {
            View v = LayoutInflater.from(getContext()).inflate(mTabViewLayoutId, mTabStrip,
                    false);

            //Log.d("onPageSelected","Ok");
            final TextView tv = (TextView) v;
            final CharSequence temp = mAdapter.getPageTitle(i);

            ((Activity)mContext).runOnUiThread(new Runnable() {
                @Override
                public void run() {

                    tv.setText(temp);
                }
            });

        }

            if (mScrollState == ViewPager.SCROLL_STATE_IDLE) {
            mTabStrip.onViewPagerPageChanged(position, 0f);
            scrollToTab(position, 0);
        }
        for (int i = 0; i < mTabStrip.getChildCount(); i++) {
            mTabStrip.getChildAt(i).setSelected(position == i);
        }
        if (mViewPagerPageChangeListener != null) {
            mViewPagerPageChangeListener.onPageSelected(position);
        }

    }

}

那么,这个细分市场有什么问题?我的适配器的getPageTitle()返回图像的Charsequence。我究竟做错了什么 ?我是Android新手。

1 个答案:

答案 0 :(得分:0)

在每次循环迭代中,您都会膨胀一个从未使用过的视图。

您需要修改适配器instantiateItem()创建的视图。