Android将多个数据从列表传递到另一个活动

时间:2015-05-26 21:33:32

标签: android listview android-activity onitemclicklistener onitemlongclicklistener

我有:

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

在一项活动中。

第二项活动包含:

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数组。它适用但仅适用于列表中的一个项目。如果我单击另一个位置,然后单击"Back"按钮,则只有最后单击的项目位置将传递给另一个活动。在按下"Back"按钮(不仅是最后一个按钮)之前,我能否以某种方式传递所有被点击的项目/位置?

2 个答案:

答案 0 :(得分:1)

您可以将long press个职位存储到ArrayList<Integer>。使用Intent将其传递给i.putIntegerArrayListExtra(name, value)。在您的接收Activity中使用data.getIntegerArrayListExtra(name)来获取值。

答案 1 :(得分:1)

试试这个:

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

第二项活动

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