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);
        }
    }
}