【问题标题】:how to pass list of selected users to previous activity如何将选定用户列表传递给以前的活动
【发布时间】:2013-12-23 09:56:10
【问题描述】:

我有一个活动 A,它有一个添加按钮,当我单击该按钮时,它会在第二个活动中显示带有复选框的用户列表,当我选择用户并单击一致按钮时,它应该显示在所有用户活动中A.我正在使用适配器来显示用户。

从这个按钮我得到检查值的列表

private void checkButtonClick() 
{
    conform = (Button)findViewById(R.id.Confirm);
    conform.setOnClickListener(new OnClickListener() 
    {
        @Override
        public void onClick(View v) 
        {
            StringBuffer responseText = new StringBuffer();
            responseText.append("The following were selected...\n");

            ArrayList<Namelist> stateList = contactadapteruser.listexample;

            Bundle b=null;
            Namelist state;
            for(int i=0;i<stateList.size();i++)
            {
                state = stateList.get(i);
                b = new Bundle();
                b.putString("selected",state.getName());
                if(state.isSelected())
                {
                    responseText.append("\n" + state.getName());
                }
            }

            Intent i= new Intent(Contactselectuser.this,Contactrepresentativedetails.class);
            i.putExtras(b);
            startActivity(i);
        }         
    }); 
}

从这个按钮我得到我正在检索值

send.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
    // TODO Auto-generated method stub

        Intent i2 = getIntent();
        Bundle b1 = i2.getExtras();
        String name1 = b1.getString("selected");
        tweet.setText(name1+",\t");
    }
});

我的问题是我无法获取已检查的用户。 谁能帮帮我。

【问题讨论】:

  • 在你的情况下使用 startActivityForResult()。
  • 是否有必要使用可包裹的东西我很困惑
  • 如何将数组列表值获取到上一个活动中'
  • 您可以填充静态数组列表。这样您就可以使用 ClassName.array_list 从应用程序中的任何位置进行访问
  • 但是我怎样才能得到所有检查值的列表

标签: android


【解决方案1】:

使用 start Activity 作为结果来开始您的第二个 Activity。

Intent intent = new Intent(this, SecondActivity.class);
startActivityForResult(intent, 1);

从关闭前的第二个活动开始,您可以发送

Intent return_intent = new Intent();
 return_intent.putExtra("your_user_list",user_list);
 setResult(RESULT_CODE,return_intent);     
 finish();

现在在您的 FirstActivity 中覆盖 onActivityResult() 方法

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

  if (requestCode == 1) {

     if(resultCode == RESULT_CODE){
         // GET YOUR USER LIST HERE AND USE IT FOR YOUR PURPOSE.    
         user_list=data.getExtra("your_user_list");          
     }
  }
}

您也可以根据自己的情况使用广播发送方和接收方。但上述方法对您的任务有好处。

【讨论】:

    【解决方案2】:
    ArrayList<Namelist> stateList = contactadapteruser.listexample;
    
    // convert your ArrayList to a String[]
    
    String[] arr = new String[stateList.size()];
    
    for (int i = 0; i < arr.length; i++)
    {
        arr[i] = stateList.get(i).getName();
    }
    

    然后使用this question 作为源,将字符串数组放入您的意图中:

    Bundle b = new Bundle();
    b.putStringArray("selected", arr);
    Intent i = new Intent(Contactselectuser.this,Contactrepresentativedetails.class);
    i.putExtras(b);
    startActivity(i);
    

    然后从您的其他活动中读取字符串数组:

    Bundle b = getIntent().getExtras();
    String[] array = b.getStringArray("selected");
    

    【讨论】:

    • 在for循环中如何检查条件是否被检查
    • 你好,请回复我如何检查条件
    • @user3069112 我不能告诉你如何检查他们的复选框是否被选中。我对你的代码一无所知。不过,您可以像这样确定是否选中了一个复选框:checkbox.isChecked(),如果选中,它将返回 true,如果没有选中,则返回 false
    猜你喜欢
    • 1970-01-01
    • 2012-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-30
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    相关资源
    最近更新 更多