无法获取notifyDataSetChanged()来更新我的listview

时间:2017-10-14 01:57:37

标签: java android listview notifydatasetchanged

我认识到在stackoverflow上已经有很多关于notifyDataSetChanged()方法的问题和答案,但是我已经回顾了大部分问题并且无法弄清楚这里有什么问题。我正在尝试让我的listview在用户点击“添加成分按钮”时动态添加更多行。它将在第一次点击后添加第一个成分,但任何后续点击都不会导致对列表视图的任何更改。任何帮助表示赞赏。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_new_recipe);
    ButterKnife.bind(this);
    mAddInstructionsButton.setOnClickListener(this);
    mAddIngredientButton.setOnClickListener(this);
    adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, ingredientList);
    mListView.setAdapter(adapter);
}

public void onClick(View v) {
    if(v == mAddIngredientButton) {
        if(mIngredientName.getText().toString().trim().equalsIgnoreCase("") || mIngredientMeasurement.getSelectedItem().toString().trim().equalsIgnoreCase("") || mIngredientCount.getText().toString().trim().equalsIgnoreCase("")) {
            Toast answerStatus = Toast.makeText(NewRecipeActivity.this, "Fill out all fields", Toast.LENGTH_LONG);
            answerStatus.show();
        } else {
            String ingredient = createIngredientString();
            ingredientList.add(ingredient);
            adapter.notifyDataSetChanged();
            clearIngredientInputs();
            Log.i("NewRecipeActivity", "List includes: " + ingredientList);
        }
    }

2 个答案:

答案 0 :(得分:0)

您需要使用方法

将新的成分添加到适配器列表中
adapter.add(ingredient)
像这样

String ingredient = createIngredientString();
adapter.add(ingredient);
adapter.notifyDataSetChanged();

答案 1 :(得分:0)

噢,小男孩,我觉得这个很傻。该代码一直在我的问题中发布。我的活动上的listview元素设置为52像素的高度,因此添加到列表视图的任何行都没有出现。 花了大约4个小时阅读帖子并更改了java文件中的各种内容,这只是显示元素高度的问题。 Cue sad trombone sound