这甚至可能吗?假设我创建了一个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();
}
}
答案 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通过意图传递所选对象