【问题标题】:Displaying values in an ArrayList using ArrayAdapter使用 ArrayAdapter 在 ArrayList 中显示值
【发布时间】:2017-08-04 05:18:08
【问题描述】:

我正在尝试创建一个 ListView 来显示通过 EditText 输入的值。我正在使用ArrayListArrayAdapter,但恐怕我并不完全理解它们是如何工作的。

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

我不确定为什么我无法使用 android.R.id.listView1,其中 listView1 是我在活动中的列表视图的 id。这不是适配器需要从我的 ArrayList 中列出的 resourceid 吗?

以下是我的完整方法和声明。抱歉,如果我的问题含糊不清,我不完全知道使用哪个术语来表示什么,我无意造成混淆。

    public ArrayAdapter<String> adapter;
ArrayList<String> allScores = new ArrayList<>();
ListView listScores = (ListView)findViewById(R.id.listView1);

public void onButtonClick(View V){
    EditText input1 = (EditText) findViewById(R.id.scorePrompt);
    TextView output1 = (TextView) findViewById(R.id.textTotal);
    String blankCheck = input1.getText().toString(); //CHANGE INPUT IN scorePrompt TO STRING

    TextView output2 = (TextView) findViewById(R.id.custName); //TEST FOR ARRAY LIST DISPLAY
    if (blankCheck.equals("")) {
        Toast blankError = Toast.makeText(getApplicationContext(), "YOU CANT SKIP HOLES JERK", Toast.LENGTH_LONG);
        blankError.show();
    } else {
        //savedScores.add(input1.getText().toString());//Save input into array list
        int num1 = Integer.parseInt(input1.getText().toString()); //Get input from text box
        int sum = num1 + score2;
        score2 = sum;

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

        output1.setText("Your score is : " + Integer.toString(sum));
        input1.setText(""); //Clear input text box

    }
};

关于我的意图的一些背景信息,我希望用户在 EditText 中输入整数,将这些值保存在 ArrayList 中,然后用用户输入的值逐行填充 ListView。谢谢你的帮助。

【问题讨论】:

标签: java android arraylist android-arrayadapter


【解决方案1】:

试试这个方法。

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

ListView listView = (ListView) findViewById(R.id.listView1);
listView.setAdapter(itemsAdapter);

【讨论】:

    【解决方案2】:

    这里你必须使用listview的setadapter,而不是放在适配器中

    试试这个

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

    如果你想添加输入的东西而不是创建一个 Arraylist 并简单地将其传递给适配器的第三个参数

    【讨论】:

    • 谢谢!这似乎有效,但现在我遇到了另一个问题。我的应用程序在启动时立即崩溃。我解析了代码,发现它发生在我创建“ListView”时。我不确定这是为什么。
    • 嘿吉格。我实际上能够找到解决我的问题的方法。我不知道我必须在我的 onCreate 方法中初始化我的ArrayList。我将解决这个问题,并希望让它发挥作用。谢谢你的一切!
    猜你喜欢
    • 1970-01-01
    • 2015-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-01
    • 1970-01-01
    • 2014-09-15
    相关资源
    最近更新 更多