Nmar93 Posted June 14, 2012 Report Share Posted June 14, 2012 Boas pessoal, Eu estou a fazer uma "pequena aplicação" que regista vários custos tais como o Combustível, a Alimentação, entre outros. O que estou a fazer e usar tudo nas mesmas actividades! Tenho duas abas. Uma para registar e outra para listar. A de listar faz tudo, tirando, o inserir. Pode-se dizer que e a gestao de tudo. E bom, eu tenho várias listviews na mesma actividade e para efectuar a edição eu tenho que "apanhar" o ID seleccionado nessa listview. Eu ja tinha feito algo do genero, mas em actividades diferentes. Ao carregar na funçao OnItemClick, eu fazia algo do genero: (Atençao que isto era de um outro trabalho meu!) Intent launchActivity = new Intent(getApplicationContext(), EditaTarefa.class); launchActivity.putExtra("theID", String.valueOf(theCombustivel.get(position).getID())); startActivityForResult(launchActivity, REQUEST_CODE); Como podem ver eu mandava um ID depois para a outra actividade que a apanhava desta forma: if(getIntent().hasExtra("theID")){ theID = Integer.parseInt(getIntent().getExtras().getString("theID")); CombustivelDataBaseHandler db = new CombustivelDataBaseHandler(getApplicationContext()); Combustivel theCombustivel = db.getCombustiveis(theID); //Aqui ficaria depois o txtQualquerCoisa.setText(String.valueOf(theCombustivel.getTarefa() )) depois de declarar a base Handler e essas cenas. Basicamente é isto, mas a minha pergunta é fazer exactamente o que aquelas linhas acima fazem mas na mesma actividade. Eu quero é tomar o valor do que é seleccionado ao meu editText que aparece tambem logo que carrego no indice. Nao sei se me fiz entender! Se souberem como me ajudar, agradecia muito mesmo. Cumprimentos 😉 Link to comment Share on other sites More sharing options...
KTachyon Posted June 14, 2012 Report Share Posted June 14, 2012 (edited) Podes sempre colocar os valores num singleton da app acessível por todas as actividades. EDIT: Se calhar não percebi bem. O que tu queres é, seleccionar qualquer coisa numa aba, para depois ires à outra ver os detalhes do que foi seleccionado? Se for isso, não me parece ser uma forma de navegação muito boa, mas o truque seria teres uma referência para a outra actividade ou para um objecto que fosse lido pela outra actividade. De qualquer forma tens sempre que notificar a outra actividade para "ler" a alteração, pelo que podes mesmo fazer isto com notificações. Edited June 14, 2012 by KTachyon “There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.” -- Tony Hoare Link to comment Share on other sites More sharing options...
Nmar93 Posted June 14, 2012 Author Report Share Posted June 14, 2012 Desculpa meu, mas nao percebi o que disseste! lool Podes ser mais explicito sff? Brigado lol 😛 Link to comment Share on other sites More sharing options...
KTachyon Posted June 14, 2012 Report Share Posted June 14, 2012 Em que parte? “There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.” -- Tony Hoare Link to comment Share on other sites More sharing options...
Nmar93 Posted June 14, 2012 Author Report Share Posted June 14, 2012 Nao nao! Percebeste mal! Eu so disse que tou a organizar por abas a aplicaçao toda. Tenho uma aba que ser para os registos e a outra para a gestao. E nessa aba de gestao tenho 6 botoes. Ao carregar num botao, nessa mesma actividade, aparece uma listview com supostamente os dados registados na base de dados com um botao em cima que serve para esconder a listview e o proprio botao. Usando o NaoseiQue.setVisibility(View.GONE); E pronto ao carregar num dado qualquer da base de dados, e aparecer um novo editText, com o suposto dado ja preenchido que seleccionei na listview e um botao Editar em baixo. A minha dificuldade e passar o valor da listview seleccionado para o campo EditText que depois aparece em cima. Daí até ter exemplificado com o codigo que tinha desenvolvido num outro trabalho mas que consiste em actividade diferentes, e é daquela maneira que se deve fazer. O que pretendo e mesmo so nessa actividade! Cumps Link to comment Share on other sites More sharing options...
KTachyon Posted June 14, 2012 Report Share Posted June 14, 2012 Então, se é na mesma actividade só tens que apanhar a linha da listview que foi seleccionada. ListView lv = getListView(); lv.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View view, int position, long id) { // o que precisa de ser feito aqui } }); Deves ter os dados organizados num adapter, certo? Só tens que os ir buscar. Caso seja necessário poder fazer uma subclasse do adapter para que tenhas acesso à informação da forma como queres. “There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.” -- Tony Hoare Link to comment Share on other sites More sharing options...
Nmar93 Posted June 14, 2012 Author Report Share Posted June 14, 2012 Lol entao o trabalho que fiz anteriormente seria supostamente bem mais dificil lol. Muito obrigado, nao tinha ideia que fosse tao facil 😉 Cumprimentos Link to comment Share on other sites More sharing options...
Nmar93 Posted June 15, 2012 Author Report Share Posted June 15, 2012 Ja agora aproveito para perguntar! Nesta mesma aplicação, a operação de registo e listagem funcionam na perfeição no emulador, mas quando instalo o .apk no telemovel (tambem pelo run, mas escolho o telemovel), essas operações nao realizam direito. Suspeito que seja o de listagem porque o inserir da sempre um Toast a dizer "inserido com sucesso" mas quando chego a listagem dessa mesma cena, a textview aparece a dizer que nao existe registos (aparece caso a base de dados esteja vazia == true). No emulador, tudo perfeito. Isto e muito estranho... Link to comment Share on other sites More sharing options...
KTachyon Posted June 15, 2012 Report Share Posted June 15, 2012 Epah, podem ser muitas coisas. Confirma a versão para a qual estás a compilar (se é a mesma que o SO que tens no telemóvel). Podes espreitar o AndroidManifest.xml para descobrires isto. Para além disso, o emulador, apesar de ser chamado de "emulador", é bastante mau. Existem várias coisas que não funcionam como devem apesar de ser suposto funcionar exactamente como o telemóvel. E tem outros problemas derivados da forma como decidiram implementar a comunicação com as ferramentas que tornam o emulador verdadeiramente horrível como ferramenta de apoio ao desenvolvimento. Resumindo, não confies no emulador, faz sempre o deploy para o dispositivo. A minha sugestão para descobrires o problema é criares um log que regista toda a informação relevante durante esse processo, para que possas avaliar o que está a correr mal. “There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.” -- Tony Hoare Link to comment Share on other sites More sharing options...
Nmar93 Posted June 15, 2012 Author Report Share Posted June 15, 2012 O problema e que eu sei que aquilo esta mesmo certo! Tenho 110% de certeza! E de facto o emulador conseguiu provar isso, mas e tao estranho... nao e mesmo o suficiente porque eu quero que isto funcione no telemovel e nao no emulador, senao ia-me pelo Vb.net e fazia la o programa... Link to comment Share on other sites More sharing options...
KTachyon Posted June 15, 2012 Report Share Posted June 15, 2012 Confirma o API Level para que estás a compilar. Espreita aqui: http://developer.android.com/guide/appendix/api-levels.html De qualquer forma, a minha sugestão ainda se mantém. Manda-o fazer o log de tudo o que achares relevante até achares o problema. “There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.” -- Tony Hoare Link to comment Share on other sites More sharing options...
Nmar93 Posted June 25, 2012 Author Report Share Posted June 25, 2012 Ja agora ate posso postar o que me aconteceu, caso aconteca o mesmo a alguem. O problema era simplesmente da base de dados no telemovel :S A ultima coisa em que pensei foi ir para o menu de aplicaçoes e limpar os dados da minha aplicaçao... a partir dai, perfeito! Sempre consegui resolver o problema de apanhar o objecto e preencher o editText, com o ID seleccionado, mas agora fica a dúvida de como eu faço o Update ou o Delete assim que o ID for seleccionado. O meu editar encontra-se assim neste momento: btnEditarCombustivel.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String txtEdicaoCombustivel = ((EditText) findViewById(R.id.et_EditarCombustivel)).getText().toString(); if(txtEdicaoCombustivel.length() != 0){ //double ConversaoEdicaoComb = Double.parseDouble(txtEdicaoCombustivel); Combustivel oCombustivel = new Combustivel(txtEdicaoCombustivel); Toast myToast = Toast.makeText(getApplicationContext(), "Preço actualizado com sucesso.", Toast.LENGTH_LONG); myToast.setGravity(Gravity.CENTER_HORIZONTAL|Gravity.CENTER_VERTICAL, 0, 100); myToast.setDuration(3000); myToast.show(); db_Combustivel.UpdateCombustivel(oCombustivel); btnEditarCombustivel.setVisibility(View.GONE); btnApagarCombustivel.setVisibility(View.GONE); txtEditarCombustivel.setVisibility(View.GONE); theCombustivel = db_Combustivel.getAllCombustiveis(); lstCombustivel.setAdapter(new CombustivelAdapter(getApplicationContext() , android.R.layout.simple_list_item_1, theCombustivel)); } } }); Estou a fazer mais algum erro estupido? Cumprimentos! Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now