【问题标题】:Android pass multiple data from list to another activityAndroid将多个数据从列表传递到另一个活动
【发布时间】:2015-05-26 21:33:31
【问题描述】:

我有:

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" 按钮之前点击的所有项目/位置(不仅仅是最后一个)吗?

【问题讨论】:

    标签: android listview android-activity onitemclicklistener onitemlongclicklistener


    【解决方案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);
            }
        }
    }
    

    【讨论】:

    • 效果很好!必须练习数组 :) 谢谢!
    【解决方案2】:

    您可以将您的long press 位置存储到ArrayList&lt;Integer&gt;。使用i.putIntegerArrayListExtra(name, value) 将其传递给您的Intent。在您接收Activity 时,使用data.getIntegerArrayListExtra(name) 获取值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-05
      • 2013-07-17
      • 1970-01-01
      • 2011-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-31
      相关资源
      最近更新 更多