Jestem nowy w Android programming
.Jak ustawić stronę bieżącą w programie ViewPager zgodnie z wyborem użytkownika i skąd wiadomo, która pozycja listy nazywa się aktywnością
Mam listę przedmiotów, kiedy użytkownik klika element, który zaprowadzi go na ekran z danymi tego przedmiotu.
Chcę, aby użytkownik miał możliwość przesuwania palcem w prawo iw lewo, aby wyświetlić szczegóły innych przedmiotów na liście, zamiast wrócić do listy i wybrać inny element.
Przeczytałem, że muszę użyć ViewPager
, aby przesuwać palcem w prawo iw lewo, więc zrobiłem to.
ViewPager działa dobrze, ale mój problem po kliknięciu dowolnego elementu na liście zawsze trafiam na pierwszą stronę w ViewPager.
Nie chcę tego, czego chcę, jeśli kliknę na pozycję 4 na liście, zabiorę mnie na stronę 4 w okienku podglądu i nadal będę miał możliwość przesuwania palcem w prawo iw lewo, aby wyświetlić szczegóły innych przedmiotów.
W jaki sposób ustawić stronę w viewpager
przez using mPager.setCurrentItem(0)
Ale nie wiem jak ustawić go zgodnie z którym element został wybrany z listy (tj. Który element uruchomił działanie).
Oto mój kod:
Główna działalność, która zawiera ListView:
public class Main extends SherlockListActivity implements OnItemClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ListView mylist = (ListView) findViewById(android.R.id.list);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.simple_list_reda_1, R.id.list_content, getResources().getStringArray(R.array.items_list_array));
mylist.setAdapter(adapter);
mylist.setOnItemClickListener(new OnItemClickListener()
{
public void onItemClick(AdapterView<?> arg0,View arg1, int position, long arg3)
{
Intent n = null;
switch (position){
case 0:
n = new Intent(getApplicationContext(), ViewPagerClass.class);
break;
case 1:
n = new Intent(getApplicationContext(), ViewPagerClass.class);
break;
case 2:
n = new Intent(getApplicationContext(), ViewPagerClass.class);
break;
case 3:
n = new Intent(getApplicationContext(), ViewPagerClass.class);
break;
}
if(null!=n)
startActivity(n);
}
});
}
}
ViewPagerClass
public class ViewPagerClass extends SherlockFragmentActivity{
static final int NUM_ITEMS = 4;
MyAdapter mAdapter;
ViewPager mPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.setContentView(R.layout.viewpager_layout);
mAdapter = new MyAdapter(getSupportFragmentManager());
mPager = (ViewPager) findViewById(R.id.viewpager);
mPager.setAdapter(mAdapter);
//mPager.setCurrentItem(2);
final ActionBar ab = getSupportActionBar();
ab.setDisplayHomeAsUpEnabled(true);
ab.setDisplayUseLogoEnabled(false);
ab.setDisplayShowHomeEnabled(false);
}
public static class MyAdapter extends FragmentPagerAdapter {
public MyAdapter(FragmentManager fm) {
super(fm);
}
@Override
public int getCount() {
return NUM_ITEMS;
}
@Override
public Fragment getItem(int position) {
switch(position){
case 0: return FirstPageFragment.newInstance();
case 1: return SecondPageFragment.newInstance();
case 2: return ThirdPageFragment.newInstance();
case 3: return FourthPageFragment.newInstance();
}
return null;
}
}
public static class FirstPageFragment extends Fragment {
public static FirstPageFragment newInstance() {
FirstPageFragment f = new FirstPageFragment();
return f;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View V = inflater.inflate(R.layout.fragment1, container, false);
return V;
}
}
public static class SecondPageFragment extends Fragment {
public static SecondPageFragment newInstance() {
SecondPageFragment f = new SecondPageFragment();
return f;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View V = inflater.inflate(R.layout.fragment2, container, false);
return V;
}
}
public static class ThirdPageFragment extends Fragment {
public static ThirdPageFragment newInstance() {
ThirdPageFragment f = new ThirdPageFragment();
return f;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View V = inflater.inflate(R.layout.fragment3, container, false);
return V;
}
}
public static class FourthPageFragment extends Fragment {
public static ThirdPageFragment newInstance() {
ThirdPageFragment f = new ThirdPageFragment();
return f;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View V = inflater.inflate(R.layout.fragment4, container, false);
return V;
}
}
Wreszcie viewpager_layout.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
>
<android.support.v4.view.ViewPager
android:id="@+android:id/viewpager"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
Tak w skrócie co chcę jest: Jeśli kliknę na pozycji 3 w wykazie I przejść do ekranu ze szczegółami pkt 3, i jeśli przesuń w prawo dostać się do punktu 4, i jeśli przesunę w lewo, dojdę do pozycji 2.
"Wiem, jak ustawić stronę w przeglądarce podglądu za pomocą mPager.setCurrentItem (0) Ale nie wiem jak ustawić go zgodnie z którym element został wybrany z listy (tj. Który element uruchomił działanie). Mam nadzieję, że moje pytanie jest jasne. Wydawało mi się, że chciał wiedzieć, jak ustawić pozycję, która została kliknięta w ViewPager – draksia