Java listview中的ViewPager

Java listview中的ViewPager,java,android,android-layout,android-activity,parse-platform,Java,Android,Android Layout,Android Activity,Parse Platform,我创建了一个使用解析数据填充的项目列表。与其在单个页面中返回用户列表,我更希望每页只返回一个用户详细信息,并且可以在列表中的其他用户的位置左右滑动,而不是查看一个长列表 为了达到这一目的,我研究了- 然而,我在解决这个问题时遇到了一些问题。下面是我尝试过的,以及我遇到的问题。在列表中生成用户的活动 我真的很困惑,如果你能帮助我,那会很有帮助的 我希望我说得很清楚,如果您需要进一步澄清,请告诉我。您能准确解释您的问题是什么吗?困惑是其他人无法回答的。什么不起作用?您的问题是什么?感谢您的及时回复,

我创建了一个使用解析数据填充的项目列表。与其在单个页面中返回用户列表,我更希望每页只返回一个用户详细信息,并且可以在列表中的其他用户的位置左右滑动,而不是查看一个长列表

为了达到这一目的,我研究了-

然而,我在解决这个问题时遇到了一些问题。下面是我尝试过的,以及我遇到的问题。在列表中生成用户的活动

我真的很困惑,如果你能帮助我,那会很有帮助的


我希望我说得很清楚,如果您需要进一步澄清,请告诉我。

您能准确解释您的问题是什么吗?困惑是其他人无法回答的。什么不起作用?您的问题是什么?感谢您的及时回复,并同意人们无法回答困惑。我所做的是一个使用ParseQuery填充列表的活动,如果满足各种条件,它会在其中绘制诸如名称、标题和年龄等项。我的问题是,我不希望在单个活动页面上填充一个长列表,而是希望每个活动页面只显示一个用户信息名称、标题、年龄,并且用户可以使用滑动视图在列表中左右导航。在我的第一篇文章中,我尝试过使用viewpager代码,但我感到困惑,希望我的澄清能有所帮助。我数周来一直在努力解决这个问题,因此任何援助都会有所帮助
public class MatchingActivity extends Activity {
 private String currentUserId;
    private ArrayAdapter<String> namesArrayAdapter;
    private ArrayList<String> names;
    private ListView usersListView;
    private Button logoutButton;
    String userGender = ParseUser.getCurrentUser().getString("Gender");
    String activityName = ParseUser.getCurrentUser().getString("ActivityName");
    Number maxDistance = ParseUser.getCurrentUser().getNumber("Maximum_Distance");


    String userLookingGender = ParseUser.getCurrentUser().getString("Looking_Gender");
    Number minimumAge = ParseUser.getCurrentUser().getNumber("Minimum_Age");
    Number maximumAge = ParseUser.getCurrentUser().getNumber("Maximum_Age");


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.matching);

        logoutButton = (Button) findViewById(R.id.logoutButton);
        logoutButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                ParseUser.logOut();
                Intent intent = new Intent(getApplicationContext(), LoginActivity.class);
                startActivity(intent);
            }
        });

        setConversationsList();
    }
    private void setConversationsList() {
        currentUserId = ParseUser.getCurrentUser().getObjectId();
        names = new ArrayList<String>();
      // String userActivitySelectionName = null;

           ParseQuery<ParseUser> query = ParseUser.getQuery();

         //  query.whereEqualTo("ActivityName",userActivitySelectionName);

           query.whereNotEqualTo("objectId", ParseUser.getCurrentUser().getObjectId());
           // users with Gender = currentUser.Looking_Gender
           query.whereEqualTo("Gender", userLookingGender);
           // users with Looking_Gender = currentUser.Gender
           query.whereEqualTo("Looking_Gender", userGender);
           query.whereEqualTo("ActivityName", activityName);
           query.whereGreaterThanOrEqualTo("Minimum_Age", minimumAge);
           query.whereLessThanOrEqualTo("Maximum_Age", maximumAge);
  //  query.whereWithinKilometers("Maximum_Distance", point, maxDistance)





        query.findInBackground(new FindCallback<ParseUser>() {

            public void done(List<ParseUser> userList, ParseException e) {
                if (e == null) {
                    for (int i=0; i<userList.size(); i++) {
                        names.add(userList.get(i).get("Name").toString());
                        names.add(userList.get(i).get("Headline").toString());
                        names.add(userList.get(i).get("Age").toString());
                 //       names.add(userList.get(i).getParseObject("ProfilePicture").;


                    }




                    usersListView = (ListView)findViewById(R.id.usersListView);
                    namesArrayAdapter =
                        new ArrayAdapter<String>(getApplicationContext(),
                            R.layout.user_list_item, names);
                    usersListView.setAdapter(namesArrayAdapter);

                    usersListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                        @Override
                        public void onItemClick(AdapterView<?> a, View v, int i, long l) {
                            openConversation(names, i);
                        }
                    });

                } else {
                    Toast.makeText(getApplicationContext(),
                        "Error loading user list",
                            Toast.LENGTH_LONG).show();
                }
            }
        });
    }

    public void openConversation(ArrayList<String> names, int pos) {
        ParseQuery<ParseUser> query = ParseUser.getQuery();
        query.whereEqualTo("Name", names.get(pos));
        query.findInBackground(new FindCallback<ParseUser>() {
           public void done(List<ParseUser> user, ParseException e) {
               if (e == null) {
                   Intent intent = new Intent(getApplicationContext(), MessagingActivity.class);
                   intent.putExtra("RECIPIENT_ID", user.get(0).getObjectId());
                   startActivity(intent);
               } else {
                   Toast.makeText(getApplicationContext(),
                       "Error finding that user",
                           Toast.LENGTH_SHORT).show();
               }
           }
        });
    }
}
public class ScreenSlideActivity extends FragmentActivity {
/**
 * The number of pages (wizard steps) to show in this demo.
 */
private static final int NUM_PAGES = 5;

/**
 * The pager widget, which handles animation and allows swiping horizontally to access previous
 * and next wizard steps.
 */
private ViewPager mPager;

/**
 * The pager adapter, which provides the pages to the view pager widget.
 */
private PagerAdapter mPagerAdapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_screen_slide);

    // Instantiate a ViewPager and a PagerAdapter.
    mPager = (ViewPager) findViewById(R.id.pager);
    mPagerAdapter = new ScreenSlidePagerAdapter(getFragmentManager());
    mPager.setAdapter(mPagerAdapter);
    mPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
        @Override
        public void onPageSelected(int position) {
            // When changing pages, reset the action bar actions since they are dependent
            // on which page is currently active. An alternative approach is to have each
            // fragment expose actions itself (rather than the activity exposing actions),
            // but for simplicity, the activity provides the actions in this sample.
            invalidateOptionsMenu();
        }
    });
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    super.onCreateOptionsMenu(menu);
    getMenuInflater().inflate(R.menu.activity_screen_slide, menu);

    menu.findItem(R.id.action_previous).setEnabled(mPager.getCurrentItem() > 0);

    // Add either a "next" or "finish" button to the action bar, depending on which page
    // is currently selected.
    MenuItem item = menu.add(Menu.NONE, R.id.action_next, Menu.NONE,
            (mPager.getCurrentItem() == mPagerAdapter.getCount() - 1)
                    ? R.string.action_finish
                    : R.string.action_next);
    item.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case android.R.id.home:
            // Navigate "up" the demo structure to the launchpad activity.
            // See http://developer.android.com/design/patterns/navigation.html for more.
            NavUtils.navigateUpTo(this, new Intent(this, MainActivity.class));
            return true;

        case R.id.action_previous:
            // Go to the previous step in the wizard. If there is no previous step,
            // setCurrentItem will do nothing.
            mPager.setCurrentItem(mPager.getCurrentItem() - 1);
            return true;

        case R.id.action_next:
            // Advance to the next step in the wizard. If there is no next step, setCurrentItem
            // will do nothing.
            mPager.setCurrentItem(mPager.getCurrentItem() + 1);
            return true;
    }

    return super.onOptionsItemSelected(item);
}

/**
 * A simple pager adapter that represents 5 {@link ScreenSlidePageFragment} objects, in
 * sequence.
 */
private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter {
    public ScreenSlidePagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int position) {
        return ScreenSlidePageFragment.create(position);
    }

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