2
我的數組列表以某種方式被填充。什麼填充這個數組列表?
看看這段代碼:
final ListView list = getListView();
boolean threadNeeded = true;
//settings
list.setItemsCanFocus(false);
Bundle extras = getIntent().getExtras();
allFriends = getIntent().getParcelableExtra("shibby.whisper.allFriends");
selectedFriends = getIntent().getParcelableExtra("shibby.whisper.selectedFriends");
System.out.println("JUST ENTERED ACTIVITY : "+selectedFriends.getPositions());
if(extras !=null) {
maxPlayers = extras.getInt("max_players");
}
if(allFriends != null){
if(!allFriends.getIds().isEmpty()){
threadNeeded = false;
}
}
if(selectedFriends == null){
System.out.println("selectedFriends is null before callback from ListActivity");
selectedFriends = new PlayerList();
}
list.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
FacebookFriendsAdapter a = (FacebookFriendsAdapter) list.getAdapter();
//select item
boolean isSelected = a.toggleSelected(new Integer(position));
//if reached maximum players and have selected a new user
if(((maxPlayers+1 == a.getMaxPlayersCounter() && maxPlayers != 0) && isSelected)
|| (maxPlayers == 0 && a.getMaxPlayersCounter() == maxAvailablePlayers+1)){
Log.e("addfriends","Max Players Reached");
a.toggleSelected(new Integer(position));
final Dialog dialog = new Dialog(FacebookFriendsListActivity.this, R.style.CustomDialogTheme);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.maxplayers);
dialog.setCancelable(true);
// set the custom dialog components - text, image and button
Button dialogButton = (Button) dialog.findViewById(R.id.max_players_dismiss_btn);
// if button is clicked, close the custom dialog
dialogButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
dialog.show();
}
}
});
m_friends = new ArrayList<Player>();
this.m_adapter = new FacebookFriendsAdapter(this, R.layout.facebbok_friends_item, m_friends);
//set the selected friends on the adapter to remember earlier picks
if(selectedFriends != null){
oldPositions = selectedFriends.getPositions();
m_adapter.setSelectedIds(selectedFriends.getPositions());
m_adapter.setMaxPlayersCounter(selectedFriends.getIds().size());
System.out.println("Max player selected Is : "+maxPlayers+" And Selected Players Counter Is :" +m_adapter.getMaxPlayersCounter());
}
當活動開始時,selectedFriends.getPosition()
返回空。
當我點擊一個按鈕,我做這個動作:
if(oldPositions != null){
System.out.println("This is old positions : " + oldPositions);
}
其中填充(由新位置),但我不明白爲什麼。我引用了一些我不應該做的事嗎?我是否覆蓋內存中的數據?
編輯:這種情況發生在我從ListView中選擇一些朋友之後。 toggleSelected()
添加或刪除內部ArrayList中的項目。
是的,我是知道的,但事情是,它不是suppoused來填充任何東西,正如我所說在活動的開始時,它是空的。 –
@ eric.itzhak:當您打印它時,顯示列表的* current *內容,而不是它在活動開始時的內容。 –
聖馬鈴薯!這樣做解決了問題!但我不明白它怎麼會被填充?我明白你說的是什麼,但我根本沒有改變它,在代碼的最後,我用數據庫中的數據填充數組 –