如何在Android中从ListView获取下一个和上一个列表项

4

我有一个包含类似Twitter推文的列表视图,当我点击特定的列表项时,它会显示该特定列表项的详细信息。

在该活动中,有两个按钮用于显示“下一个”列表项的详细信息和“上一个”列表项的详细信息。

问题:如何使用视图翻转器在该特定活动中显示“上一个”列表项(通过单击上一个按钮)和“下一个”列表项(通过单击下一个按钮)。如何从主活动获取列表项详细信息到此活动?


你尝试过什么了吗?如果你已经尝试过了,那么你必须在这里发布你遇到问题的代码。 - himanshu
我刚刚从第一个活动中将每个项目的id保存在数组中,现在尝试访问它。但我不知道这是否是正确的方法。 - KP_
那样,我得到了值...但是我们能用ViewFlipper实现这个吗? - KP_
之后获取第二个活动正在显示的列表项的ID。将此ID存储为计数器变量。现在,通过单击“下一个”按钮增加计数器并在第二个活动中加载相应内容,通过单击“上一个”按钮减少计数器并加载相应数据。 - himanshu
您可以使用 Intent 在不同的活动之间获取内容。请参考这里获取更多信息。 - himanshu
对不起,Himanshu,我觉得你没有理解我的问题。没关系,我来解释一下。我有一个名为“最近的帖子”的主活动。在那里,有一个列表视图显示所有最近的帖子。当有人点击它时,它会进入第二个活动并显示该帖子的详细信息。在第二个活动中,有一个导航按钮用于显示下一个列表项(最近的帖子)。而且,所有这些都是Web服务调用。所以不能增加列表项的ID。 - KP_
2个回答

8
   **Next :**
   int position,last;
   position=listView.getCheckedItemPosition();
   position=position + 1;
   listView.getItemAtPosition(position);
   last=listView.getLastVisiblePosition()
  if(position==last)
     {
       System.out.println("Next is Impossilble");
     }

  **Previous:**
   int position;
   position=listView.getCheckedItemPosition();
   position=position - 1;
   listView.getItemAtPosition(position);
   last=listView.getLastVisiblePosition()
  if(position==1)
     {
       System.out.println("previous is Impossilble");

但是在第二个活动中,我该如何获取第一个ListView(来自第一个活动)的ID? - KP_
@user1119204 在第一个活动中: Bundle bundle=new Bundle(); bundle.putString("wt",position); Intent intent=new Intent(arg1.getContext(), secondActivity.class); intent.putExtras(bundle); startActivityForResult(intent,0); 在第二个活动中: Bundle bundle=this.getIntent().getExtras(); String array=bundle.getString("wt"); strs.setText(array); - selvaiyyamperumal
我使用了另一种方法,即在自定义适配器类中声明一个静态arraylist,并保存来自json的所有id,在第二个活动中,我像这样调用了该arraylist,“posts.get(position).id”,其中位置是从第一个活动使用bundle传递的。就这样我得到了值。一旦我获得了帖子id,我就使用意图调用了第二个活动,并通过bundle传递了该帖子id。还有其他更好的方法吗? - KP_
传递数组数据的另一种方式是使用Bundle数组 Bundle bundle = new Bundle(); bundle.putStringArray("wt", new String[]{str, strs,addr,phone}); Intent intent=new Intent(arg1.getContext(),searchlistitemActivity.class); intent.putExtras(bundle); 在第二个Activity中: strs.setText(array[0]); str.setText(array[1]); addr.setText(array[2]); dialers.setText(array[3]); - selvaiyyamperumal

3
你需要从数组或者ArrayList中获取数据来作为适配器的内容。在创建适配器时,它需要一个包含数据的数组或者列表,你可以将这个数组或者列表存储起来以供后续访问。
请按以下步骤操作:
1. 当你选择了某个特定的项目时,你会得到该项目的位置。将此位置存储为一个计数器变量。
2. 根据位置,在某些视图中显示一些数据。
3. 点击下一个按钮时,增加计数器。
4. 同样地,当你点击上一个按钮时,减少计数器。
5. 使用计数器值来从ListView中使用的数组或列表中获取数据。

但问题是,列表项是使用 Web 服务调用的,因此无法递增计数器。 - KP_

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接