gpt4 book ai didi

android - 如何根据用户选择在 ViewPager 中设置 CurrentPage 以及我如何知道哪个列表项称为 Activity

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:58:38 27 4
gpt4 key购买 nike

我是 Android 编程的新手。

我有一个项目列表,当用户点击一个项目时,它会将他们带到一个包含该项目详细信息的屏幕。

我希望用户能够左右滑动以查看列表中其他项目的详细信息,而不是返回列表并选择另一个项目。

我读到我需要使用 ViewPager 才能左右滑动,所以我就这么做了。
ViewPager 工作正常,但我的问题是,当我单击列表中的任何项目时,我总是会到达 ViewPager 的第一页。

我不想那样,我想要的是如果我单击列表中的项目 4,它会将我带到 View 寻呼机中的第 4 页,并且仍然可以左右滑动以查看其他项目的详细信息.
我知道如何通过 using mPager.setCurrentItem(0)
viewpager 中设置页面但我不知道如何根据从列表中选择的项目(即启动 Activity 的项目)来设置它。

这是我的代码:

包含 ListView 的主要 Activity :

    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;

}
}

最后查看pager_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"
>

所以简而言之,我想要的是:如果我点击列表中的第 3 项,我会转到显示第 3 项详细信息的屏幕,如果我向右滑动,我会看到第 4 项,如果我向左滑动,我会看到第 2 项。

最佳答案

onItemClickListener() 中,您需要向 Intent 添加额外的内容,以便在该 Activity 启动时获取它。

n.putExtra("POSITION_KEY", position);

ViewPagerClass onCreate() 中使用

int position = getIntent().getIntExtra("POSITION_KEY", 0);
mPager.setCurrentItem(position);

那应该做你想做的事。

关于android - 如何根据用户选择在 ViewPager 中设置 CurrentPage 以及我如何知道哪个列表项称为 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14368242/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com