【问题标题】:My Android ArrayList shows only last added value我的 Android ArrayList 仅显示最后一个附加值
【发布时间】:2015-11-02 12:21:35
【问题描述】:

我有一个ArrayList<String> tokens; 在 ListViewClick 上存储令牌值。在我从ArrayList<String> tokens 检索数据时添加值后,它只显示最后添加的值

ArrayList<String> tokens;
...
....
public void onItemClick(AdapterView<?> listView, View view,
                                int position, long id) {
            tokens = new ArrayList<String>();

            Cursor cursor = (Cursor) listView.getItemAtPosition(position);
            String selectedtoken = cursor.getString(cursor.getColumnIndexOrThrow("ContactToken"));

            tokens.add(selectedtoken);
        }
...
...
Log.i("array: ", tokens.toString()); // shows the last added value

【问题讨论】:

  • 代码tokens = new ArrayList&lt;String&gt;();的初始化错误。您需要在类级别进行初始化。

标签: java android arrays arraylist


【解决方案1】:

您必须将 ArrayList 的初始化移到 onItemClick() 方法之外。目前每次点击一个项目,都会创建一个新的ArrayList

ArrayList<String> tokens = new ArrayList<String>();
...
....
public void onItemClick(AdapterView<?> listView, View view,int position, long id) {

    Cursor cursor = (Cursor) listView.getItemAtPosition(position);
    String selectedtoken = cursor.getString(cursor.getColumnIndexOrThrow("ContactToken"));

    tokens.add(selectedtoken);
}
...
...
Log.i("array: ", tokens.toString()); // shows the last added value

【讨论】:

    【解决方案2】:

    移动语句

    tokens = new ArrayList<String>();
    

    onItemClick 方法中最好放入构造函数中,这样每次调用该方法时都不会重新初始化它,例如

    public MyClass() {
       tokens = new ArrayList<>();
    }
    

    tokens 可以定义为

    private List<String> tokens;
    

    【讨论】:

      【解决方案3】:

      在 onCreate() 方法中初始化 Arraylist

      【讨论】:

        【解决方案4】:

        问题是,您尝试在令牌初始化之前访问您的信息。

        你必须移动它。例如 onCreate-Method。

        也可以将它移到构造函数中。

        第三种方法是改变这个:

        ArrayList<String> tokens;
        

        到这里:

        ArrayList<String> tokens= new ArrayList<String>();
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-07-06
          • 2023-03-08
          • 1970-01-01
          相关资源
          最近更新 更多