ListView / SimpleAdapter 不刷新 - Android

Posted

技术标签:

【中文标题】ListView / SimpleAdapter 不刷新 - Android【英文标题】:ListView / SimpleAdapter doesn't refresh - Android 【发布时间】:2019-05-18 08:01:42 【问题描述】:

我想通过单击按钮添加到 ListView,但 ListView 不刷新。 HashMap 本身会刷新,但 ListView 不会。

这是我的代码:

final ListView grupidView = (ListView) findViewById(R.id.grupiList);
final HashMap<String,String> uusGrupp = new HashMap<>();

Button gruppNupp = findViewById(R.id.lisaGrupp);

final List<HashMap<String, String>> grupiLiikmed = new ArrayList<>();

final SimpleAdapter adapter = new SimpleAdapter(this, grupiLiikmed, R.layout.list_items,
        new String[]"First line", "Second line",
        new int[]R.id.text1, R.id.text2);

Iterator it = uusGrupp.entrySet().iterator();

while(it.hasNext())
    HashMap<String,String > gruppResult = new HashMap<>();
    Map.Entry pair = (Map.Entry)it.next();
    gruppResult.put("First line", pair.getKey().toString());
    gruppResult.put("Second line", pair.getValue().toString());
    grupiLiikmed.add(gruppResult);


grupidView.setAdapter(adapter);

gruppNupp.setOnClickListener(new View.OnClickListener() 
    @Override
    public void onClick(View v) 
        EditText grupp = findViewById(R.id.grupp);
        if(!grupp.getText().toString().equals("")) 
            uusGrupp.put(grupp.getText().toString(), "Grupp");
            grupp.setText("");
            grupidView.invalidateViews();
            adapter.notifyDataSetChanged();

        
    

【问题讨论】:

【参考方案1】:

您似乎没有在onClick 调用中向支持适配器grupiLiikmed 的列表中添加任何内容。你必须调用这样的东西来更新适配器:

HashMap<String,String> newItem = new HashMap<>();
newItem.put("First line", "something");
newItem.put("Second line", "else");
grupiLiikmed.add(newItem);
adapter.notifyDataSetChanged();

【讨论】:

以上是关于ListView / SimpleAdapter 不刷新 - Android的主要内容,如果未能解决你的问题,请参考以下文章

AndroidStudio中ListView的使用方法之SimpleAdapter适配器

AndroidStudio中ListView的使用方法之SimpleAdapter适配器

AndroidStudio中ListView的使用方法之SimpleAdapter适配器

AndroidStudio中ListView的使用方法之SimpleAdapter适配器

View(视图)——ListView之 SimpleAdapter

无法使用 SimpleAdapter 刷新 ListView