Android 将多个数据从列表传递到另一个 activity
Android pass multiple data from list to another activity
我有:
mListView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
choosedOffer= mListTest1.get(position).toString();
return false;
}
});
和
public void onBackPressed() {
Intent intent = new Intent(ListviewActivity.this, MainActivity.class);
intent.putExtra("text",choosedOffer);
setResult(RESULT_OK, intent);
finish();
}
合一activity.
第二个activity包含:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1) {
if(resultCode == RESULT_OK){
String passedText=data.getStringExtra("text");
ar.add(passedText);
}
}
}
现在我需要的是:
长按 mListView
项目后,我想以某种方式存储它的位置,然后在单击按钮 "Back"
后,我希望将位置传递给 ar
数组第二 activity。它有效,但仅适用于列表中的一项。如果我点击另一个位置,然后点击 "Back"
按钮,只有最后点击的项目位置会被传递到另一个 activity。我可以通过某种方式传递在按下 "Back"
按钮之前单击的所有 items/positions(不仅是最后一个)吗?
您可以将 long press
个位置存储到 ArrayList<Integer>
中。使用 i.putIntegerArrayListExtra(name, value)
将其传递给您的 Intent
。在您接收 Activity
中使用 data.getIntegerArrayListExtra(name)
获取值。
试试这个:
ArrayList<String> choosedOffer = new ArrayList<String>();
mListView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
choosedOffer.add(mListTest1.get(position).toString());
return false;
}
});
和
public void onBackPressed() {
Intent intent = new Intent(ListviewActivity.this, MainActivity.class);
intent.putStringArrayListExtra("text",choosedOffer);
setResult(RESULT_OK, intent);
finish();
}
第二个activity
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1) {
if(resultCode == RESULT_OK){
ArrayList<String> passedText = data.getStringArrayListExtra("text");
ar.addAll(passedText);
}
}
}
我有:
mListView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
choosedOffer= mListTest1.get(position).toString();
return false;
}
});
和
public void onBackPressed() {
Intent intent = new Intent(ListviewActivity.this, MainActivity.class);
intent.putExtra("text",choosedOffer);
setResult(RESULT_OK, intent);
finish();
}
合一activity.
第二个activity包含:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1) {
if(resultCode == RESULT_OK){
String passedText=data.getStringExtra("text");
ar.add(passedText);
}
}
}
现在我需要的是:
长按 mListView
项目后,我想以某种方式存储它的位置,然后在单击按钮 "Back"
后,我希望将位置传递给 ar
数组第二 activity。它有效,但仅适用于列表中的一项。如果我点击另一个位置,然后点击 "Back"
按钮,只有最后点击的项目位置会被传递到另一个 activity。我可以通过某种方式传递在按下 "Back"
按钮之前单击的所有 items/positions(不仅是最后一个)吗?
您可以将 long press
个位置存储到 ArrayList<Integer>
中。使用 i.putIntegerArrayListExtra(name, value)
将其传递给您的 Intent
。在您接收 Activity
中使用 data.getIntegerArrayListExtra(name)
获取值。
试试这个:
ArrayList<String> choosedOffer = new ArrayList<String>();
mListView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
choosedOffer.add(mListTest1.get(position).toString());
return false;
}
});
和
public void onBackPressed() {
Intent intent = new Intent(ListviewActivity.this, MainActivity.class);
intent.putStringArrayListExtra("text",choosedOffer);
setResult(RESULT_OK, intent);
finish();
}
第二个activity
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1) {
if(resultCode == RESULT_OK){
ArrayList<String> passedText = data.getStringArrayListExtra("text");
ar.addAll(passedText);
}
}
}