Olá.
Não dá muito o que dizer sem ver seu código, mas acredito que deva tá faltando você notificar seu adapter da alteração após a inclusão do seu item.
Algo como :
items.clear();
items = dbHelper.getItems();
// reload the items from database adapter.notifyDataSetChanged();
Items é sua fonte de dados que você passou inicialmente pro adapter da tua listview, e o adapter é o mesmo que você utilizou no seu setlistadapter da sua listview.
Glauber pode dar uma resposta mais concreta mas eu espero ter ajudado. =)
--
Você recebeu essa mensagem porque está inscrito no grupo "Livro Dominando o Android" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para livro-dominando-o-...@googlegroups.com.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/livro-dominando-o-android/018b4877-28ec-4a7b-a9ba-45cc60ea62ce%40googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.
public class ProjetoFragment extends ListFragment{
String[] arrayProj;
String[] arrayProf;
String[] arrayDescProj;
String nomeFinal;
String profFinal;
ArrayAdapter<String> adapter;
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle saveInstanceState){
ViewGroup rootView = (ViewGroup)inflater.inflate(R.layout.fragment_list,container,false);
//RECEBE O VALOR DA ACTIVITY
TelaLugarProjeto activity = (TelaLugarProjeto) getActivity();arrayProj = activity.getProjData();
arrayProf = activity.getProfData();
arrayDescProj = activity.getDescProjData();
setListAdapter(adapter);
adapter.notifyDataSetChanged();
return rootView;
}
public class DialogProjetoAdd extends android.support.v4.app.DialogFragment {}
LayoutInflater inflater;
View v;
EditText pjtNomeAdd,pjtProfAdd,pjtDescAdd;
String[] arrayProj;
String[] arrayProf;
String[] arrayDescProj;
String nomeFinal;
String profFinal;
String DescProjFinal;
Projeto projeto;
int idProjeto;
CommunicatorAtualizaPjt communicator;
@Override
@NonNull
public Dialog onCreateDialog(Bundle savedInstanceState) {
idProjeto = getArguments().getInt("passaPjt");
inflater = getActivity().getLayoutInflater();
v = inflater.inflate(R.layout.dialog_projeto_add, null);
declaracoes();
//PEGA ARRAY
TelaLugarProjeto activity = (TelaLugarProjeto) getActivity();
arrayProj = activity.getProjData();
arrayProf = activity.getProfData();
arrayDescProj = activity.getDescProjData();
// String[] novoNome = new String[mNomeAdd +];
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setView(v).setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// String verificad = String.valueOf(aucM.getText());
// if (!verificad.matches("")) {
// String textMateria = String.valueOf(aucM.getText());
// if(textMateria.contains("—")){
// String[] mat = String.valueOf(aucM.getText()).split("—");
// String matDiv = mat[1];
// materia.setMateria(matDiv);
// }else{
// materia.setMateria(textMateria);
// }
// }
// materia.setTurma(String.valueOf(edtTur.getText()));
// materia.setBloco(String.valueOf(edtBloc.getText()));
// materia.setSala(String.valueOf(edtSal.getText()));
//
// dao = new MateriasDAO(getActivity());
// dao.alterarMateria(materia);
// dao.close();
//
// communicator.onDialogMessage();
}
}).setNegativeButton("Cancelar", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
return builder.create();
}
public void adicionadorProjeto(){
String mNomeAdd = pjtNomeAdd.getText().toString();
String mProfAdd = pjtProfAdd.getText().toString();
String mDescAdd = pjtDescAdd.getText().toString();
int nomeSize = arrayProj.length;
nomeFinal = mNomeAdd;
profFinal = mProfAdd;
DescProjFinal = mDescAdd;
if (arrayProf[0].matches("")){
arrayProj[0] = "";
arrayProj[0] = nomeFinal;
arrayProf[0] = profFinal;
arrayDescProj[0] = DescProjFinal;
nomeFinal = nomeFinal + "##";
profFinal = profFinal + "##";
DescProjFinal = DescProjFinal + "##";
}else{
for (int i = 0; i < nomeSize; i++) {
nomeFinal = nomeFinal + "##" + arrayProj[i];
profFinal = profFinal + "##" + arrayProf[i];
DescProjFinal = DescProjFinal + "##" + arrayDescProj[i];
}
nomeFinal = nomeFinal + "##";
profFinal = profFinal + "##";
DescProjFinal = DescProjFinal + "##";
}
}
public void declaracoes() {
pjtNomeAdd = (EditText) v.findViewById(R.id.pjtNomeAdd);
pjtProfAdd = (EditText) v.findViewById(R.id.pjtProfAdd);
pjtDescAdd = (EditText) v.findViewById(R.id.pjtDescAdd);
}
private boolean estaVazia(EditText etText) {
if (etText.getText().toString().trim().length() > 0)
return false;
return true;
}
@Override
public void onStart() {
super.onStart(); //super.onStart() is where dialog.show() is actually called on the underlying dialog, so we have to do it after this point
final AlertDialog d = (AlertDialog) getDialog();
if (d != null) {
Button positiveButton = (Button) d.getButton(Dialog.BUTTON_POSITIVE);
positiveButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Boolean wantToCloseDialog;
if (estaVazia(pjtNomeAdd) || estaVazia(pjtProfAdd) || estaVazia(pjtDescAdd) ){
wantToCloseDialog = false;
Toast.makeText(getActivity(), "Há Lacunas Vazias! ", Toast.LENGTH_SHORT).show();
}else{
adicionadorProjeto();
salvaNoServer(nomeFinal,profFinal,DescProjFinal);
wantToCloseDialog = true;
}
//Do stuff, possibly set wantToCloseDialog to true then...
if (wantToCloseDialog)
d.dismiss();
//else dialog stays open. Make sure you have an obvious way to close the dialog especially if you set cancellable to false.
}
});
}
}
public void salvaNoServer(String nome,String professor,String descricao){
List<Projeto> listaProjetos;
projeto = new Projeto();
listaProjetos = null;
try {
listaProjetos = projeto.getListaProjeto(idProjeto);
listaProjetos.get(0).setProjeto(nome);
listaProjetos.get(0).setProfessor(professor);
listaProjetos.get(0).setDescProj(descricao);
listaProjetos.get(0).saveInBackground();
atualizaListView();
} catch (ParseException e) {
e.printStackTrace();
}
}
public void atualizaListView(){
String[] atualizaNomes = nomeFinal.split("##");
String[] atualizaProf = profFinal.split("##");
String[] atualizaDescri = DescProjFinal.split("##");
int tamnhoLista = atualizaNomes.length;
for (int i = 0; i<tamnhoLista-1; i++){
arrayProj[i] = atualizaNomes[i];
arrayProf[i] = atualizaProf[i];
arrayDescProj[i] = atualizaDescri[i];
}
communicator.AtualizaPjt(arrayProj,arrayProf,arrayDescProj);
}
interface CommunicatorAtualizaPjt{
public void AtualizaPjt(String[] arg0,String[] arg1,String[] arg2);
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
communicator = (CommunicatorAtualizaPjt) activity;
}
@Override
public void AtualizaPjt(String[] argPjt, String[] argProf, String[] argDescPjt) {
Log.i("LOGX","Chegando aqui no zasco!");
arrayProj = argPjt;
arrayProf = argProf;
arrayDescProj = argDescPjt;
}
O Metodo que a Activity passa pro ListFragment e Pro Dialog:public String[] getProjData() {As valores que sao passados são de String[], nao postei o codiga antes por causa da formatacao dele, sempre me atrapalho com ela Mas ta atualizando a lista, o problema e no caso, o item e criado é colocado no primeiro item na lista, e os demais são passados para baixo, porém o ultimo item da lista some, é como se não criasse uma fileira a mais para a lista, o msm que volta a aparecer se eu saio e entro na acativity. Obrigado!
return arrayProj;
}
public String[] getProfData() {
return arrayProf;
}
public String[] getDescProjData() {
return arrayDescProj;
}
Desculpe por fugir um pouco do tema do livro professor Glauber, porém só recorri ao recurso de lhe fazer esta perguntar, pois eu estava a um bom tempo procurando soluções para esse meu problema sem sucesso algum, que aliás com a sua ajuda e do Kleyton Santos, consegui resolve-lo, muito obrigado mesmo!