如何显示上一个和下一个列表项的详细信息

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中获取上一个下一个值 请检查我的更新答案,尝试您的解决方案 当您传递数组列表时,您不需要传递任何其他值,例如姓名、电子邮件等。同样,您可以使用从传递的数组列表到启动活动的位置。我刚刚用干净的代码更新了我的帖子。照着做就行了。它应该给你预期的你想要达到的目标。

以上是关于如何显示上一个和下一个列表项的详细信息的主要内容,如果未能解决你的问题,请参考以下文章

如何查看特定列表视图项的详细数据

如何在 Redux 中处理列表项

选定的listitem通过json在另一个活动中显示它们的详细信息后?

Android:来自列表视图项目的下一个/上一个数据详细信息[重复]

具有动画效果的 UIView 上的上一个和下一个实现

用户从列表中选择时如何显示内容详细信息?