【问题标题】:Converting String to Arraylist<string> in Android在 Android 中将字符串转换为 Arraylist<string>
【发布时间】:2013-11-19 00:48:27
【问题描述】:

我正在尝试在 Listview 中动态输入数据。我使用第二个类文件作为对话框来获取数据并通过 Intent 传递数据。传递的数据是字符串的形式,而要显示在Listview中的arrayadapter中的数据是Arraylist的形式。 请帮我解决这个问题。

提前致谢。

我附上下面的代码

MainActivity.class

package com.example.listview;

import java.util.ArrayList;

import android.R.string;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.ListActivity;
import android.content.Intent;
import android.text.method.DialerKeyListener;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;

public class MainActivity extends Activity 
{


    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final ListView lv = (ListView) findViewById(R.id.listView1);
        final Button btn = (Button) findViewById(R.id.button1);
        final EditText input = (EditText) findViewById(R.id.editText1);

        btn.setOnClickListener(new OnClickListener() 
        {

            @Override
            public void onClick(View v) 
            {

//              array.add(input.getText().toString());
//              adapter.notifyDataSetChanged();
                Intent i = new Intent(MainActivity.this,adddialog.class);
                startActivity(i);

            }
        });
        ArrayList<String> array = new ArrayList<String>();
        final ArrayAdapter<String> adapter = new ArrayAdapter<String> (MainActivity.this,android.R.layout.simple_list_item_1,array); 
        lv.setAdapter(adapter);

        Intent i2 = getIntent();
        String n = i2.getStringExtra("name");
        array.add(n);
        adapter.notifyDataSetChanged();


    }






    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}

添加对话框

Dialog.class

package com.example.listview;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class adddialog extends Activity
{

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.adddialog);
        final EditText in = (EditText) findViewById(R.id.editText1);
        final Button btn1 = (Button) findViewById(R.id.enter);

        btn1.setOnClickListener(new OnClickListener() 
        {

            @Override
            public void onClick(View arg0) 
            {

                Intent i1 = new Intent(adddialog.this,MainActivity.class);
                i1.putExtra("name", in.getText().toString());
                startActivity(i1);
            }
        });
    }
}

【问题讨论】:

  • 你可以做array.add(&lt;String-Value-here&gt;);docs.oracle.com/javase/6/docs/api/java/util/…
  • 感谢回复,但还是不行。
  • 可能是因为Adapter是final;
  • 我把Adapter从final改成了normal,还是没有变化。
  • 嗨,你能解释一下你的实际要求吗?

标签: android listview arraylist


【解决方案1】:

开始活动并获得结果

Android 中有一个函数已经支持从 Activity 获取结果的想法。可以在标题为开始活动和获得结果here 的部分中找到有关如何执行此操作的说明。还有一个代码示例。

有时您希望在活动结束时从活动中获取结果。 例如,您可以启动一个活动,让用户选择一个 联系人列表中的人;当它结束时,它会返回那个人 被选中。为此,您调用 startActivityForResult(Intent, int) 版本,带有标识调用的第二个整数参数。这 结果将通过您的 onActivityResult(int, int, Intent) 返回 方法。

当一个activity退出时,它可以调用setResult(int)返回数据 给它的父母。它必须始终提供一个结果代码,它可以是 标准结果 RESULT_CANCELED、RESULT_OK 或任何自定义值 从 RESULT_FIRST_USER 开始。此外,它可以选择返回 返回一个包含它想要的任何附加数据的 Intent。所有这些 信息出现在父级的 Activity.onActivityResult() 上, 以及它最初提供的整数标识符。

总结

综上所述,你应该使用startActivityForResult(i1)并在MainActivity.java中实现onActivityResult()方法来获取用户在EditText中输入的数据。 onActivityResult() 实现看起来像这样:

    // Get the result of the addDialog activity.
    protected void onActivityResult(int reqCode, int resultCode, Intent data) {
        String n = data.getStringExtra("name");
        myArrayAdapter.add(n);
        myArrayAdapter.notifyDataSetChanged();
    }

【讨论】:

  • 对不起,我是 stackoverflow 的新手,我不知道。非常感谢您的帮助。
猜你喜欢
  • 2014-05-16
  • 2021-07-12
  • 2023-03-06
  • 1970-01-01
  • 2013-08-14
  • 2012-10-04
  • 1970-01-01
  • 2018-06-11
  • 2011-03-28
相关资源
最近更新 更多