在Android中将带有特定ID的arraylist从一个类传递到另一个类

时间:2013-02-21 08:42:29

标签: android android-intent arraylist

我希望通过传递带有id的arraylist来将数据从一个类传递到另一个类。

 listviewfirst.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                long arg3) {
            // TODO Auto-generated method stub

                    Intent i= new Intent(MainActivity.this,Questionactivity.class);
                    // To pass data 
                   i.putExtra("uploadarraylist", uploadarraylist);
                   startActivity(i);


        }

这里我已经传递了数组列表,但基于id no我想将数据传递给下一个活动页面。

5 个答案:

答案 0 :(得分:1)

您可以通过Bundle传递数组列表值。

>           Intent i= new Intent(context, QuestionActivity.class); 
>           Bundle bundle = new Bundle();
> 
>           bundle.putStringArrayList("messages", book_mark);
>           bundle.putIntegerArrayList("cell_ids", cell_ids);
>           bundle.putIntegerArrayList("cat_ids", cat_ids);
>           bundle.putIntegerArrayList("bkmId", bkmId); 
>           bookmark.putExtras(bundle);             
>           startActivity(i);

答案 1 :(得分:1)

正如您ArrayList<HashMap<String, Object>> uploadarraylist

并且您希望将给定选定索引的特定HashMap传递给下一个Activity,然后

listviewfirst.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                long arg3) {
         HashMap<String, Object> hashMap = uploadarraylist.get(arg2);
         Intent i= new Intent(MainActivity.this,Questionactivity.class);
         // To pass data                 
         i.putExtra("hashMap", hashMap);
         startActivity(i);
        }

Questionactivity

Intent intent = getIntent();    
HashMap<String, Object> hashMap = (HashMap<String, Object>) intent.getSerializableExtra("hashMap");

答案 2 :(得分:0)

将该arrayList作为静态列表,然后使用声明的calss引用在另一个类上使用它。

答案 3 :(得分:0)

你也可以使用下面给出的,所以之后不需要通过Intent:

您可以将ArrayList声明为静态的,如下所示:

public static ArrayList<String> array = new ArrayList<String>(); 

通过这样做,您可以通过以下方式从任何Activity访问您的ArrayList:

activityname.array;

其中activityname是您声明静态ArrayList的活动或类。

或者如果你想使用意图而不是你可以这样做:

Intent i = new Intent(this,activityname.class);
Bundle bun = new Bundle();
bun.putIntegerArrayListExtra(String name, ArrayList<Integer> value);
//bun.putParcelableArrayListExtra(String name, ArrayList<? extends Parcelable> value);
//bun.putStringArrayListExtra(String name, ArrayList<String> value);
i.putExtra(String name,bun);
startActivity(i);

答案 4 :(得分:0)

如果你有一个arraylist,如:      ArrayList<YourClass> list; 使您的类实现Serializable接口。 之后,您可以在putExtra()方法中添加您的arraylist。

import java.io.Serializable;

public class Bicycle implements Serializable{

  public int speed;

  public Bicycle(int startSpeed) {
    speed = startSpeed;
  }        
}

在你的活动中:

ArrayList<Bicycle> list = new ArrayList<Bicycle>();
Intent i = new intent(currentActivity.this, nextActivity.class);
i.putExtra("array", list);
startActivity(i);