使用Index访问在另一个活动中创建的Arraylist

时间:2016-04-16 21:51:29

标签: android listview android-activity arraylist

这甚至可能吗?假设我创建了一个ListView,其中包含一个活动中弹出了对象的arraylist。现在我点击了列表视图中的一个项目并抓住了索引。一旦我点击该项目,它就会带我到另一个活动以及索引号。(使用Intent)。现在我的问题是我想使用索引号来查看被点击项目的信息,以访问在上一个活动中创建的arraylist。这可能吗?

更新项目类别。我不知道我应该如何修改单一课程

public class Item {

private String name;
private String category;
private int grade;

public void setName(String n){

    name = n;
}

public void setCategory(String c){

    category = c;
}
public void setGrade(int g){

    grade = g;
}
public String getName(){
    return name;
}
public String getCategory(){

    return category;

}
public int getGrade(){
    return grade;
}

@Override
public String toString(){

    return getName();
}


}

5 个答案:

答案 0 :(得分:1)

我可以想到三种不同的方法可以帮助你做到这一点:

第一种方法

您可以在Intent中传递要用作额外内容的对象。这将要求对象可序列化,如前面提到的@androidLover。请参阅他/她的回复中的链接。

第二种方法

使用某种包含对象列表的Singleton类。 http://www.tutorialspoint.com/design_pattern/singleton_pattern.htm

由于在ListView上的click事件之后,您拥有所需对象的索引,因此您可以轻松地从Singleton类中获取该对象。

第三种方法

使用名为 EventBus 的内容。 http://square.github.io/otto/

这会略微增加您的应用程序的复杂性,因此使用此方法有点过分。但它仍然是有效的。

答案 1 :(得分:0)

你可以send objects from one activity to another,这样你就可以发送洞列表或只发送你想要的项目。

答案 2 :(得分:0)

使用Intent,您可以将列表和位置传递给另一个活动:

x

在NextActiviy中,您只需要获取列表和位置:

Intent intent = new Intent(MainActivity.this, NextActivity.class);
intent.putExtra("KeyList", MyList);
intent.putExtra("PositionKey", thePositionClicked);

现在你只需要匹配reciveList中的位置。 您可以查看意向文档以获取更多详细信息:http://developer.android.com/reference/android/content/Intent.html

答案 3 :(得分:0)

Fisrt方法您可以here使用
putParcelableArrayListExtra (String name, ArrayList<? extends Parcelable> value)。并传递您的ArrayList并使用您在第二个Activity中的ListView中OnItemClick内传递的索引获取对象。

您可以使用的第二种方法
OnItemClick listView中获取索引和对象然后使用 Gson 将该对象转换为 GsonObject 并使用putExtra传递它您发现例如here

答案 4 :(得分:-1)

尝试使用Parcelable通过意图传递所选对象