如何显示上一个和下一个列表项的详细信息
Posted
技术标签:
【中文标题】如何显示上一个和下一个列表项的详细信息【英文标题】:How to show detail of previous and next list items 【发布时间】:2014-10-01 20:42:38 【问题描述】:在我的程序中,我从 json 获取数据并存储到 arraylist 中,然后填充到 ListView 中,一旦用户点击显示另一个活动中记录的任何列表项,我有两个按钮,即:- 上一个和下一个,现在我想每当用户点击上一个按钮(需要显示上一个列表项详细信息)和下一个按钮(需要显示下一个列表项详细信息).....
这是我用来获取数据并显示点击项目详细信息的代码
DetailActivity.java:
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_detail);
Bundle bundle = getIntent().getExtras();
// add cast to ArrayList<Actors>
final ArrayList<Actors> arrayList= (ArrayList<Actors>) bundle.getSerializable("information");
final int currentindex = bundle.getInt("index");
final Actors actors = arrayList.get(currentindex);
textName = (TextView) findViewById(R.id.textName);
for(int i=0; i<arrayList.size(); i++)
textName.setText(actors.getName());
btnNext = (Button) findViewById(R.id.button1);
btnPrev = (Button) findViewById(R.id.button2);
btnNext.setOnClickListener(new OnClickListener()
@Override
public void onClick(View arg0)
// TODO Auto-generated method stub
);
【问题讨论】:
【参考方案1】: int currentindex;
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_detail);
Bundle bundle = getIntent().getExtras();
// add cast to ArrayList<Actors>
final ArrayList<Actors> arrayList= (ArrayList<Actors>) bundle.getSerializable("information");
currentindex = bundle.getInt("index");
textName = (TextView) findViewById(R.id.textName);
textName.setText(""+arrayList.arrayList.get(currentindex).getName());
btnNext = (Button) findViewById(R.id.button1);
btnPrev = (Button) findViewById(R.id.button2);
btnNext.setOnClickListener(new OnClickListener()
@Override
public void onClick(View arg0)
// TODO Auto-generated method stub
currentindex=currentindex+1;
if(currentindex<arrayList.size())
textName.setText(""+arrayList.get(currentindex).getName());
else
currentindex=currentindex-1;
);
btnPrev.setOnClickListener(new OnClickListener()
@Override
public void onClick(View arg0)
// TODO Auto-generated method stub
currentindex=currentindex-1;
if(currentindex>=0)
textName.setText(""+arrayList.get(currentindex).getName());
else
currentindex=currentindex+1;
);
【讨论】:
很好的解决方案,使用最简单的方法:) +1【参考方案2】:只需将 JSON 收集的带有选定索引的数组列表传递给下一个启动活动,然后根据当前选择获取 -1 和 +1 等位置,并从您的集合中获取值以显示特定位置信息
在启动 nre 活动时执行以下操作
intent.putStringArrayListExtra("contactList ", contactList );
intent.putExtra("current", pos);
在下一个活动中做类似下面的事情
ArrayList<String > contactList contactList = intent.getStringArrayListExtra("contactList ");
int position = intent.getIntExtra("current", 0);
contactList.get(position);
//for previous do
contactList.get(position-1);
//for next do
contactList.get(position+1);
【讨论】:
你能用我现有的代码给我指路吗? 意图意图 = new Intent(); intent.putStringArrayListExtra("contactList", contactList); intent.putExtra("当前", pos);只需做这样的事情并在下一个活动中获取相同的contactList并从contactList中获取当前选定的值以显示当前并执行+或_以从contactList arraylist中获取上一个下一个值 请检查我的更新答案,尝试您的解决方案 当您传递数组列表时,您不需要传递任何其他值,例如姓名、电子邮件等。同样,您可以使用从传递的数组列表到启动活动的位置。我刚刚用干净的代码更新了我的帖子。照着做就行了。它应该给你预期的你想要达到的目标。以上是关于如何显示上一个和下一个列表项的详细信息的主要内容,如果未能解决你的问题,请参考以下文章
选定的listitem通过json在另一个活动中显示它们的详细信息后?