package br.com.while42.rpgcs.activity; import java.util.List; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ListView; import br.com.while42.rpgcs.R; import br.com.while42.rpgcs.activity.support.ExampleRpgCharacter; import br.com.while42.rpgcs.activity.support.TypeRequestCode; import br.com.while42.rpgcs.adapter.ListCharacterAdapter; import br.com.while42.rpgcs.model.character.RpgCharacter; import br.com.while42.rpgcs.persist.DataManager; import com.actionbarsherlock.app.SherlockActivity; import com.actionbarsherlock.view.Menu; import com.actionbarsherlock.view.MenuItem; import com.actionbarsherlock.view.MenuItem.OnMenuItemClickListener; public class MainMenu extends SherlockActivity { private ListCharacterAdapter adapter; private List<RpgCharacter> characters; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main_menu); DataManager dataManager = new DataManager(this); characters = dataManager.retrieveAllRpgCharacters(); // Add example by list is empty TODO: Verify if necessary if (characters.isEmpty()) { RpgCharacter example = ExampleRpgCharacter.create(); dataManager.saveRpgCharacter(example); characters.add(example); } ListView lvCharacters = (ListView) findViewById(R.id_start.listview_characters); Log.d("DEBUG", "new DataManager(this).retrieveAllRpgCharacters().size(): " + dataManager.retrieveAllRpgCharacters().size()); adapter = new ListCharacterAdapter(this, characters); lvCharacters.setAdapter(adapter); lvCharacters.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) { Intent intent = new Intent(MainMenu.this, PlayRpgCharacter.class); new RpgCharacterIntentUtils().putSerializeRpgCharacter(intent, (RpgCharacter) adapter.getItem(position)); startActivity(intent); } }); } @Override protected void onResume() { super.onResume(); characters = new DataManager(this).retrieveAllRpgCharacters(); adapter.setList(characters); adapter.notifyDataSetChanged(); } @Override public boolean onCreateOptionsMenu(Menu menu) { getSupportMenuInflater().inflate(R.menu.main_options, menu); MenuItem itemNew = menu.findItem(R.id_main_menu.new_character); itemNew.setOnMenuItemClickListener(new OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { startActivityForResult(new Intent(MainMenu.this, EditRpgCharacter.class), TypeRequestCode.NEW_CHARACTER_REQUEST.getValue()); return false; } }); return super.onCreateOptionsMenu(menu); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == TypeRequestCode.NEW_CHARACTER_REQUEST.getValue()) { if (resultCode != RESULT_OK) { // TODO: Falta tratar corretamente este caso Log.d("onActivityResult", "resultCode != RESULT_OK (resultCode : " + resultCode + " requestCode: " + requestCode + ")"); return; } RpgCharacter character = new RpgCharacterIntentUtils().getSerializeRpgCharacter(data); // Caso tenha acabado de adicionar um contato novo, repassa para a activity de Play Intent intent = new Intent(MainMenu.this, PlayRpgCharacter.class); new RpgCharacterIntentUtils().putSerializeRpgCharacter(intent, character); startActivity(intent); } } }