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 : 인쇄 할 때 활동의 시작 부분에 있던 내용이 아닌 목록의 현재 * 내용을 표시합니다. –
성 감자! 그렇게하면 문제가 해결됩니다! 하지만 어떻게 채워질 수 있었는지 모르겠다. 당신이 말하는 것을 이해하지만 코드를 변경하지는 않습니다. 해당 배열에 데이터를 채 웁니다. –