Android,阵列问题

时间:2011-03-21 20:23:44

标签: android arrays

我正在处理存储处理应用程序(实际存储)。我的应用。正在调用按钮按下ZXing条形码阅读器,扫描代码后,会弹出一个新的活动(窗口)。我可以在哪里阅读扫描的代码,我可以输入一定数量(我想从该产品中获得多少)。我到达那里一个完成按钮,在完成按钮上我回到主窗口。在下一个按钮上,再次调用ZXing,我扫描结果窗口弹出,数量输入等等......现在问题,我将扫描的代码+数量存储在一个数组中。所以我可以在ListView中显示它们。我明白了:

String[] names = new String[] { "Linux", "Windows7", "Eclipse", "Suse", "Ubuntu", "Solaris", "Android", "iPhone"};

所以我知道我是如何用数据创建数组的,这就是我如何显示它:

this.setListAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_checked, product));

我想知道我是如何做一个空数组,以及如何在我按下Next按钮时添加新字符串,我将在活动之间传递数组。就是这样了。嗯,是的,有可能编辑数组的特定部分,因为这就是我向用户显示数组的列表的原因,所以他可以在Eclipse行上,例如点击它,他可以在Android中编写并保存。

我希望有人可以帮助或给我一些关于这两个问题的暗示。谢谢你。

2 个答案:

答案 0 :(得分:2)

如果使用ArrayList,你会更灵活。您无需更改ArrayAdapter部件,因为它具有可与ArrayLists一起使用的构造函数。

请参阅此处的文档:http://developer.android.com/reference/java/util/ArrayList.html

ArrayList允许您根据需要替换,追加和删除任意数量的元素,而无需担心重新分配数组或您实现自己的数据结构时需要执行的任何其他低级操作。

这是我前几天玩的整个例子:

import java.util.ArrayList;
import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnKeyListener;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;

public class TODOActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        // Get a handle to the ListView and hook it up to the todoList via the
        // adapter.
        ListView myListView = (ListView) findViewById(R.id.myListView);
        final ArrayList<String> todoList = new ArrayList<String>();
        final ArrayAdapter<String> todoListAdapter = new ArrayAdapter<String>(
                this, android.R.layout.simple_list_item_1, todoList);
        myListView.setAdapter(todoListAdapter);
        todoList.
        // Get a handle to the EditText and set a key listener to enter text.
        // with the dpad or enter key.
        final EditText myEditText = (EditText) findViewById(R.id.myEditText);
        myEditText.setOnKeyListener(new OnKeyListener() {
            public boolean onKey(View v, int keyCode, KeyEvent event) {
                if (event.getAction() == KeyEvent.ACTION_DOWN
                        && (keyCode == KeyEvent.KEYCODE_DPAD_CENTER
                                || keyCode == KeyEvent.KEYCODE_ENTER))  {
                    todoList.add(0, myEditText.getText().toString());
                    todoListAdapter.notifyDataSetChanged();
                    myEditText.setText("");
                    return true;    // consume event
                }
                // TODO Auto-generated method stub
                return false;
            }
        });

    }

答案 1 :(得分:0)

尝试使用ArrayList<String>代替String[]。它有点开销,但它可以让你做像

这样的事情
arrayList.add("Hello, world!");
相关问题