簡體   English   中英

無法更新 listView (android)

[英]cant update listView (android)

我正在嘗試編寫一些代碼(世界永遠不會知道什么:D),當我嘗試更新列表視圖時,我只是收到一個錯誤....

理論上的代碼:“當我點擊 NavDrawer 中的項目時,listView 應該填充特定數據”

實際代碼:

public class MainActivity extends AppCompatActivity {
ArrayAdapter<String> adapter;
String[] values;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    ListView listview = (ListView) findViewById(R.id.listview);
    values = new String[]{"Android", "iPhone", "WindowsMobile",
            "Blackberry", "WebOS", "Ubuntu", "Windows7"};
    adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, values);
    listview.setAdapter(adapter);
}
public void update(){
    adapter.clear();
    adapter.notifyDataSetChanged();
}

該方法是從存在於 NavDrawerFragment.java 中的這個方法調用的

@Override
public void itemClicked(View view, int position) {
    Toast.makeText(getActivity(), "shit is going down", Toast.LENGTH_LONG).show();
    new MainActivity().update();

}

我猜這是因為我創建了一個新對象,但我只是(在輸入帖子的過程中)將適配器作為方法參數傳遞(你可以將它想象成一個 setter)並且在 itemClicked 方法中我輸入了 adapter.clear( )和同樣的事情發生了


好的,我使用 setter 更改了值變量

 public void setValues(String[] values) {
    this.values = values;
    adapter.notifyDataSetChanged();
} 

我從 recyclerview(存在於抽屜中)適配器String values[] = {"lel", "uja"}; mainActivity.setValues(values); String values[] = {"lel", "uja"}; mainActivity.setValues(values); 同樣的崩潰,maybile som1 想撥打 Skype 電話嗎? 我保證,我不會煩人


顯然我畢竟是在創建另一個對象:

 MainActivity mainActivity = new MainActivity();

我想知道為什么我可以像這樣訪問該方法:

mainActivity.setValues(values);

所以可能我要問的是:如何在不創建活動的情況下訪問方法?

對於 ArrayAdapter,notifyDataSetChanged 僅在您在適配器上使用add()insert()remove()clear()時才有效。

當一個ArrayAdapter的構造,它保存了參考List中傳遞。如果你是這是一個成員的名單傳遞Activity ,並更改活動成員后, ArrayAdapter仍持有該參考原始列表。 適配器不知道您更改了活動中的列表。

 @Override
    public void itemClicked(View view, int position) {
        //filter your list i.e `values` based on on item click,clearing it and adding new values
        adapter.notifyDataSetChanged();
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM