【问题标题】:Add items to listview dynamically from autocompletetextview从 autocompletetextview 动态地将项目添加到列表视图
【发布时间】:2017-11-21 21:28:20
【问题描述】:
public void AutocmpleteMeth() {
    // Hieronder is het code voor Autocomplete [BEGIN]
    final AutoSuggestAdapter adapter = new AutoSuggestAdapter(this, android.R.layout.simple_dropdown_item_1line, lstProduct);
    ACTV.setAdapter(adapter);
    ACTV.setThreshold(1);

    ACTV.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {

            String selectedItem = (String) arg0.getItemAtPosition(position);
            Boodschappenlst.add(selectedItem);
            ACTV.setOnEditorActionListener(new TextView.OnEditorActionListener() {
                public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
                    if ((event != null && (event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) || (actionId == EditorInfo.IME_ACTION_DONE)) {
                        Log.e("TAG", "Done pressed");
                        ACTV.setText("");

                    }
                    return false;
                }
            });
        }
        //Autocmplete [END]
    });

}

这是我的自动完成方法,它非常适合通过按下完成键将项目添加到列表视图,并且在按下该键后键盘消失并且自动完成文本设置为“”。我想让它更有活力。就像现在发生的事情是当用户单击建议列表中的项目时。它涉及 Autocompletetextview 字段,之后用户必须在键盘上按完成,它会显示在列表视图中。但我想要的是它直接添加到列表视图中。当用户单击建议列表中的任何项目时,它不会转到文本字段,用户不必按完成。它只是在单击时将该项目添加到列表视图中,并且文本字段会被重置。 提前致谢。

【问题讨论】:

    标签: android android-studio


    【解决方案1】:

    将项目添加到Boodschappenlst 后,您需要在相关ListView 的适配器上调用notifyDataSetChanged()。此方法应该可以满足您的需要:

    public void AutocmpleteMeth() {
     // Hieronder is het code voor Autocomplete [BEGIN]
     final AutoSuggestAdapter adapter = new AutoSuggestAdapter(this, android.R.layout.simple_dropdown_item_1line, lstProduct);
     ACTV.setAdapter(adapter);
     ACTV.setThreshold(1);
    
     ACTV.setOnItemClickListener(new AdapterView.OnItemClickListener() {
      @Override
      public void onItemClick(AdapterView < ? > arg0, View arg1, int position, long arg3) {
    
        String selectedItem = (String) arg0.getItemAtPosition(position);
        Boodschappenlst.add(selectedItem);
        // Call notifyDatasetChanged() here on the related ListView's adapter here to recognise new item change
        ACTV.setText("");
       }
       //Autocmplete [END]
     });
    }
    

    【讨论】:

    • 只有三种方法 Sir notifyall(); , deferNotifyDataSetChanged 和通知..
    • 我的意思是你的列表视图适配器。 adapter.notifyDatasetChanged()
    • 顺便说一句,在键盘上按 DONE 后添加项目,所以我认为 notify 不会做很多工作。
    • 我已将您的方法更改为仅在项目点击时更新。
    • 试过同样的问题,就像我只是不希望用户点击键盘上的按下完成它应该将它添加到列表视图并显示在我的自动完成下..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-12
    相关资源
    最近更新 更多