从适配器传递字符串数组列表并获得空结果

时间:2018-07-17 07:34:30

标签: java android android-intent android-arrayadapter

首先,我将告诉您我的英语列表非常糟糕,并且是代码的新手。

所以,请耐心和友善:)

我通过String通过了StringArraylistIntent

我无法通过StringArraylist

arrayAdapter

    userId = data.get ( getAdapterPosition () ).getUserId ();
    name = data.get ( getAdapterPosition () ).getName ();
    ImageUrl  = data.get ( getAdapterPosition () ).getImageUrl ();

    Intent intent = new Intent (mContext, DisplayActivity.class);
    Bundle bundle = new Bundle ();

    bundle.putString ("userId", userId);
    bundle.putString ("name", name);
    bundle.putStringArrayList ( "ImageUrl ", (ArrayList<String>) ImageUrl );

    intent.putExtras ( bundle );

    Toast.makeText ( mContext, "userId = " + userId, Toast.LENGTH_SHORT ).show ();
    Toast.makeText ( mContext, "name = " + name, Toast.LENGTH_SHORT ).show ();
    for (int i = 0; i < ImageUrl.size (); i++) {
        Toast.makeText ( mContext, "Url " + (i+1) + " = " + ImageUrl.get ( i ), Toast.LENGTH_SHORT ).show ();
    } // Checked all result and everything is fine.

    intent.addFlags ( Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK );
    mContext.startActivity(intent);
  

userId nameImageUrl的所有结果都能正确获取。

DisplayActivity

    Bundle bundle = getIntent().getExtras();
    assert bundle != null;

    String userId = bundle.getString ( "userId" );
    String name = bundle.getString("name");
    ArrayList<String>ImageUrl = bundle.getStringArrayList ("ImageUrl");

    Toast.makeText ( DisplayActivity.this, "userId is = " + userId, Toast.LENGTH_SHORT ).show ();
    Toast.makeText ( DisplayActivity.this, "Name is = " + name, Toast.LENGTH_SHORT ).show ();
    if (ImageUrl == null) {
        Toast.makeText ( DisplayActivity.this, "ImageUrl = null", Toast.LENGTH_SHORT ).show ();
    } else {
        for (int i = 0; i < ImageUrl.size (); i++) {
            Toast.makeText ( DisplayActivity.this, "Url " + (i+1) + " = " + ImageUrl.get ( i ), Toast.LENGTH_SHORT ).show ();
        }
    }
  

传递了userIdname的字符串值,并正确显示。

     

只有ImageUrl获得空结果。

我知道这是一个愚蠢的问题,已经有很多主题。

但是,我已经尝试过

示例:

arrayAdapter

intent.putStringArrayListExtra ( "ImageUrl ", (ArrayList<String>) ImageUrl );

DisplayActivity

ArrayList<String> ImageUrl = getIntent().getStringArrayListExtra ("ImageUrl");

没有合适的答案并得到相同的结果。

请帮助我。

我找不到出路。 ;(

3 个答案:

答案 0 :(得分:0)

这不是使用意图传递捆绑商品的正确类型

请使用它在其他活动中传递数据

如果使用活动,则使用 发送数据

Intent intent = new Intent();
intent.putExtras("key",value)

在另一个活动中获取传递的数据

String s = getIntent().getExtras().getString("key");

您可以在s变量中获取值 并根据需要更改变量类型

如果您正在使用Fragment,则可以像这样传递数据

   bundle = new Bundle();
    bundle.putString ("userId", userId);
    bundle.putString ("name", name);
    bundle.putStringArrayList ( "ImageUrl ", (ArrayList<String>) ImageUrl );
            fragment.setArguments(bundle);

并使用另一个片段获取传递的数据

        Bundle bundle = getArguments();
        String userId = bundle.getString ( "userId" );
        String name = bundle.getString("name");

您的代码

    Bundle bundle = new Bundle ();
    bundle.putString ("userId", userId);
    bundle.putString ("name", name);
    bundle.putStringArrayList ( "ImageUrl ", (ArrayList<String>) ImageUrl );

    intent.putExtras (bundle);

要获取您正在使用的数据

 Bundle bundle = getIntent().getExtras();
    assert bundle != null;

    String userId = bundle.getString ( "userId" );
    String name = bundle.getString("name");

答案 1 :(得分:0)

您可以将ArrayList序列化为一个字符串,并将其作为字符串值传递给下一个活动。

.. automodule:: main
   :members

.. automodule:: modulefolder.fileIwanttodocument
   :members:

稍后在第二个活动中,您可以再次将String反序列化为ArrayList。

 // creating output stream variables
        FileOutputStream fos = null;
        ObjectOutputStream oos = null;

        try {
            // for writing or saving binary data
            fos = new FileOutputStream("SaveArrayList.ser");

            // converting java-object to binary-format 
            oos = new ObjectOutputStream(fos);

            // writing or saving ArrayList values to stream
            oos.writeObject(yourarraylist);
            oos.flush();
            oos.close();
        } 
        catch (FileNotFoundException fnfex) {
            fnfex.printStackTrace();
        }
        catch (IOException ioex) {
            ioex.printStackTrace();
        }

答案 2 :(得分:0)

用于放置

bundle.putStringArrayList("ImageUrl", new ArrayList<>(ImageUrl));

要获取数据,请使用此

bundle.getStringArrayList("ImageUrl")