如何共享适配器的内容?

时间:2014-11-22 15:45:58

标签: java android eclipse android-arrayadapter

当用户按下对话框的正面按钮时,我想分享适配器的完整内容。 试过这个:

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1);

adapter.add("String1");
adapter.add("String2");
adapter.add("String3");
adapter.add("String4");

dialog.setPositiveButton("Share", new DialogInterface.OnClickListener() {

        @Override
        public void onClick(DialogInterface dialog, int which) {

            Intent intent = new Intent ();
            intent.setAction(Intent.ACTION_SEND);
            intent.setType("text/plain");
            for(int i = 0; i <= adapter.getCount(); i++){
                intent.putExtra(Intent.EXTRA_TEXT, adapter.getItem(i));
            }
            startActivity(Intent.createChooser(intent, "Share via")
            );
        }
    });

它不起作用。当按下“共享”按钮时,它会使应用程序崩溃。 有什么想法吗?

编辑感谢所有帮助。这是最终解决方案:

StringBuilder sb = new StringBuilder();
for(int i = 0; i < adapter.getCount(); i++){
    sb.append(adapter.getItem(i)).append("\n");
}
intent.putExtra(Intent.EXTRA_TEXT, (CharSequence) sb );

3 个答案:

答案 0 :(得分:0)

试试这个:

 for(int i = 0; **i < adapter.getCount()**; i++)

答案 1 :(得分:0)

试试这个:

for(int i = 0; i < adapter.getCount(); i++){
    intent.putExtra(Intent.EXTRA_TEXT, adapter.getItem(i));
}

这将解决您的问题。

答案 2 :(得分:0)

我猜您在以下行获得了ArrayIndexOutOfBounds异常:

intent.putExtra(Intent.EXTRA_TEXT, adapter.getItem(i));    //at getItem(i)

这是因为上面的条件:

for(int i = 0; i **<=** adapter.getCount(); i++)

由于Java中的索引从0开始,因此如果适配器计数为8,则应该访问0到7之间的索引。 因此,如果您将上述条件删除到以下内容:

for(int i = 0; i **<** adapter.getCount(); i++)

不会有任何例外。 希望有所帮助。

关于你的问题#2,通过intent共享整个数组适配器数据,我认为你可以创建一个String到备份适配器数据的数组列表,并通过以下方式传递该数组列表:

i.putStringArrayListExtra(name, value);

其中name是您正在创建的额外名称(以包名称为前缀),value是String List of String。