Проблема с ViewPager Tabs

Закрыто
alexandrx5
Сообщения: 2
Зарегистрирован: 20 дек 2012, 03:06

Проблема с ViewPager Tabs

Сообщение alexandrx5 » 13 фев 2013, 11:44

Доброго времени суток, у меня такая проблема. Есть три Tab, при скроллинге пропадает содиржимое ListView из первого Tab. Не могу понять почему пропадает содержимое.
Вот код;

MyActivity:

Код: Выделить всё

public class MyActivity extends FragmentActivity implements ActionBar.TabListener {
    static private final String TAG = "MyActivity";
	//TODO: move to settings
	static private final String url = "http://some/path/to/app.xml";
	static public final String appUrl = "url";

	private ListView listView;
	private List<App> apps;
	private ListViewAdapter listViewAdapter = null;

	private Runnable downloadingFailed = new Runnable() {
		@Override
		public void run() {
			//TODO: show bad message
			Log.d(TAG, "Runnable downloadingFailed");
			finish();
		}
	};
	private Runnable downloadingFinished = new Runnable() {
		@Override
		public void run() {
			Log.d(TAG, "Runnable downloadingFinished, xml.length == " + xmlHttpLoader.getXml().length());
			ListParser parser = new ListParser();
			parser.parse(xmlHttpLoader.getXml());
			apps = parser.getResult();
			if(apps.size() > 0) {
				createListView();
			}
			else {
				Log.e(TAG, "Dont have any application description");
			}
		}
	};
	XmlHttpLoader xmlHttpLoader;
	Handler handler;

    private PagerAdapter mPagerAdapter;
    private ViewPager mViewPager;

	@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.view_pager);
        
        mPagerAdapter = new PagerAdapter(getSupportFragmentManager());

        final ActionBar actionBar = getActionBar();

        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

        mViewPager = (ViewPager) findViewById(R.id.pager);
        mViewPager.setAdapter(mPagerAdapter);
        mViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {

            public void onPageSelected(int position) {
                    actionBar.setSelectedNavigationItem(position);
            }
         
        });
        for (int i = 0; i < mPagerAdapter.getCount(); i++) {
            actionBar.addTab(actionBar.newTab().setText(mPagerAdapter.getPageTitle(i)).setTabListener(this));
        }

		handler = new Handler();
		xmlHttpLoader = new XmlHttpLoader(url, handler, downloadingFinished, downloadingFailed);

		//Start downloading
		xmlHttpLoader.start();
    }


    public void onTabUnselected(ActionBar.Tab tab,FragmentTransaction fragmentTransaction) {
    }

    public void onTabSelected(ActionBar.Tab tab,FragmentTransaction fragmentTransaction) {
        mViewPager.setCurrentItem(tab.getPosition());
    }

    public void onTabReselected(ActionBar.Tab tab,FragmentTransaction fragmentTransaction) {
    }

	private void createListView()
	{
		Log.d(TAG,"createListView()");
		listView = (ListView) findViewById(R.id.lvAp);
		listViewAdapter = new ListViewAdapter(this, R.layout.list_item, apps);
		listView.setAdapter(listViewAdapter);
		listView.setOnItemClickListener(new OnItemClickListener() {
			@Override
			public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                Intent i = new Intent(getApplicationContext(), ItemActivity.class);
                i.putExtra(appUrl, listViewAdapter.getItem(position).getUrl());
                startActivity(i);

			}
		});
	}
PagerAdapter:

Код: Выделить всё

public class PagerAdapter extends FragmentPagerAdapter {

    final int NUM_ITEMS = 3; // number of tabs

    public PagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int i) {
        Fragment fragment = new TabFragment();
        Bundle args = new Bundle();
        args.putInt(TabFragment.ARG_OBJECT, i);
        fragment.setArguments(args);
        return fragment;
    }

    public int getItemPosition(Object object){
        return POSITION_NONE;
    }

    @Override
    public int getCount() {
        return NUM_ITEMS;
    }

    public CharSequence getPageTitle(int position) {
        String tabLabel = null;
        switch (position) {
            case 0:
                tabLabel = ("Всё");
                break;
            case 1:
                tabLabel = ("Пульт");
                break;
            case 2:
                tabLabel = ("Мышь");
                break;
        }

        return tabLabel;
    }
}
TabFragment:

Код: Выделить всё

public class TabFragment extends Fragment {

    public static final String ARG_OBJECT = "object";

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {

        Bundle args = getArguments();
        int position = args.getInt(ARG_OBJECT);

        int tabLayout = 0;
        switch (position) {
            case 0:
                tabLayout = R.layout.main;
                break;
            case 1:
                tabLayout = R.layout.tab1;
                break;
            case 2:
                tabLayout = R.layout.tab2;
                break;
        }

        View rootView = inflater.inflate(tabLayout, container, false);

        return rootView;
    }
}
main.xml

Код: Выделить всё

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="match_parent"
              android:layout_height="wrap_content">
    <ListView
            android:id="@+id/lvAp"
            android:layout_width="match_parent"
            android:layout_height="fill_parent">
    </ListView>

</LinearLayout>
list_item.xml

Код: Выделить всё

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:padding="5dp"
                android:layout_marginLeft="50dp">

    <ImageView
            android:id="@+id/apImage"
            android:layout_width="98dp"
            android:layout_height="98dp"
            android:src="@drawable/ic_launcher"
            android:contentDescription="@string/app_name"/>

    <TextView
            android:id="@+id/apName"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:layout_alignTop="@+id/apImage"
            android:layout_toRightOf="@+id/apImage"
            android:text="@string/apName"
            android:textSize="26dp"
            android:textStyle="bold"/>

    <TextView
            android:id="@+id/apDescription"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:layout_below="@+id/apName"
            android:layout_toRightOf="@id/apImage"
            android:text="@string/apDescription"
            android:textSize="18dp"
            android:textStyle="bold"/>

    <TextView
            android:id="@+id/wVersion"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="900dp"
            android:text="@string/wVersion"
            android:layout_marginTop="10dp"
            android:textSize="18dp"
            android:textStyle="bold"/>

    <TextView
            android:id="@+id/apVersion"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:layout_marginLeft="5dp"
            android:layout_toRightOf="@+id/wVersion"
            android:text="@string/apVersion"
            android:textSize="18dp"
            android:textStyle="bold"/>

    <RatingBar
            android:id="@+id/apRating"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:numStars="5"
            android:layout_below="@+id/apVersion"
            android:layout_marginTop="10dp"
            android:layout_marginLeft="935dp"
            style="?android:attr/ratingBarStyleSmall"
            android:clickable="true"
            />

</RelativeLayout>
view_pager.xml

Код: Выделить всё

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:orientation="vertical"
              android:padding="5dp"
              android:id="@+id/appLayout"
              android:layout_marginLeft="120dp"
              android:layout_marginRight="120dp">

    <android.support.v4.view.ViewPager
            android:id="@+id/pager"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            />

</LinearLayout>
Последний раз редактировалось alexandrx5 11 мар 2013, 06:43, всего редактировалось 1 раз.

Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

Re: Проблема с ViewPager Tabs

Сообщение damager82 » 21 фев 2013, 17:50

Еще актуально?
Можете весь проект скинуть?
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

Закрыто