2017-08-14 43 views
0

我正在做一個按鈕來添加一個列表項,每次我點擊它。我有這個代碼,但它只是第一次添加一個列表項。我怎樣才能讓它每次點擊按鈕時都增加一個。或者甚至可能是特定的時間範圍?這段代碼爲什麼只添加一個列表項目一次?

類中變量的聲明。

//LIST OF ARRAY STRINGS WHICH WILL SERVE AS LIST ITEMS 
ArrayList<String> listItems = new ArrayList<>(); 

//DEFINING A STRING ADAPTER WHICH WILL HANDLE THE DATA OF THE LISTVIEW 
ArrayAdapter<String> adapterForPic; 

//RECORDING HOW MANY TIMES THE BUTTON HAS BEEN CLICKED 
int clickCounter=0; 
private ListView mListView; 

onCreate()內的初始化。

if (mListView == null) { 
     mListView = (ListView) findViewById(R.id.photosListView); 
    } 

    adapterForPic=new ArrayAdapter<>(this, 
      android.R.layout.simple_list_item_1, 
      listItems); 
    setListAdapter(adapterForPic); 

進行插入的方法。

//METHOD WHICH WILL HANDLE DYNAMIC INSERTION 
public void addItems(View v) { 
    listItems.add("Clicked : "+clickCounter); 
    adapterForPic.notifyDataSetChanged(); 
    clickCounter++; 
} 

protected ListView getListView() { 
    if (mListView == null) { 
     mListView = (ListView) findViewById(R.id.photosListView); 
    } 
    return mListView; 
} 

protected void setListAdapter(ListAdapter adapter) { 
    getListView().setAdapter(adapter); 
} 

protected ListAdapter getListAdapter() { 
    ListAdapter adapter = getListView().getAdapter(); 
    if (adapter instanceof HeaderViewListAdapter) { 
     return ((HeaderViewListAdapter)adapter).getWrappedAdapter(); 
    } else { 
     return adapter; 
    } 
} 
+0

我用'ListView'和'Button'創建了一個簡單的活動,並將代碼複製到它中。我刪除了'getListAdapter()',因爲它從未在您發佈的代碼中調用過。每次點擊按鈕時,我的應用程序都會正確地繼續添加視圖,這讓我認爲問題出現在您*未發佈的代碼中;你可以發佈一切從你的活動/佈局,而不是隻是件? –

+0

[This](https://codeshare.io/adkV0B)是我在Post.java文件中完整的Java代碼。 [這裏](https://codeshare.io/al41Pm)是我的佈局文件。 –

+0

這個建議是基於我過去見過的一些奇怪的行爲。嘗試更改「listItems.add(」Clicked:「+ clickCounter);」到「listItems.add(」Clicked:「+ String.valueOf(clickCounter));」 – Hahn

回答

0

我的問題是在ListView元素的高度。這是wrap_content,因此只給我一個列表項。

相關問題