Ir para conteúdo

jrxxjr

Members
  • Total de itens

    10
  • Registro em

  • Última visita

Posts postados por jrxxjr


  1. Sou iniciante em Android, e fiz uma pequena aplicação Android de teste, usando Java, para aprender a utilizar um ListView com botões, e tive um problema. Os botões não funcionam direito, as vezes eu clico em cima do Edit, ele muda a mensagem para clicado, "Edit", confirmando que eu cliquei ai. Mas tem vezes que eu clico no botão Delete, e depois no botão Edit, e o texto não é mudado, ou seja o evento click não funcionou, se eu coloco um break point, no código-fonte, onde está entrando no evento setOnItemClickListener. Mas a mensagem exibida, não está correta.
    E tem um outro erro, de funcionamento do AlertDialog, da mensagem de confirmação de deleção.
    O código-fonte está abaixo.
    Por favor, alguém poderia me ajudar ?

     

    AgendaActivity.java

    package com.test.android.view;
    
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    
    import java.text.SimpleDateFormat;
    import java.util.ArrayList;
    import java.util.Date;
    
    import android.view.View;
    import android.widget.AdapterView;
    import android.widget.AdapterView.OnItemClickListener;
    import android.widget.Button;
    import android.widget.ListView;
    import android.widget.TextView;
    import android.widget.Toast;
    
    import com.test.android.model.Agenda;
    import com.test.android.util.Util;
    
    public class AgendaActivity extends AppCompatActivity {
    
        ListView listview;
        MyArrayAdapter agendaArrayAdapter;
        ArrayList<AgendaTo> agendaArray = new ArrayList<AgendaTo>();
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_agenda);
    
            SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
    
            agendaArray.add(new AgendaTo(sdf.format(new Date()), Util.fillSpaces("Nick", 50)));
            agendaArray.add(new AgendaTo(sdf.format(new Date()), Util.fillSpaces("John", 50)));
            agendaArray.add(new AgendaTo(sdf.format(new Date()), Util.fillSpaces("Anthony", 50)));
            agendaArray.add(new AgendaTo(sdf.format(new Date()), Util.fillSpaces("James", 50)));
            agendaArray.add(new AgendaTo(sdf.format(new Date()), Util.fillSpaces("Jack", 50)));
            agendaArray.add(new AgendaTo(sdf.format(new Date()), Util.fillSpaces("Jeremy", 50)));
            agendaArray.add(new AgendaTo(sdf.format(new Date()),Util.fillSpaces("Long", 50)));
    
            agendaArrayAdapter = new MyArrayAdapter(AgendaActivity.this, R.layout.list_item, agendaArray);
            listview = (ListView) findViewById(R.id.listView);
            listview.setItemsCanFocus(false);
            listview.setAdapter(agendaArrayAdapter);
    
            listview.setOnItemClickListener(new OnItemClickListener() {
    
                @Override
                public void onItemClick(AdapterView<?> parent, View v,
                                        final int position, long id) {
    
                    Toast.makeText(AgendaActivity.this,
                            "List Item Clicked:" + position, Toast.LENGTH_LONG)
                            .show();
                }
            });
    
        }
    
    } 

    MyArrayAdapter.java

    package com.test.android.view;
    
    import android.app.Activity;
    import android.app.AlertDialog;
    import android.content.Context;
    import android.content.DialogInterface;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.view.ViewGroup;
    import android.widget.ArrayAdapter;
    import android.widget.Button;
    import android.widget.ListView;
    import android.widget.TextView;
    import android.widget.Toast;
    
    import java.text.SimpleDateFormat;
    import java.util.ArrayList;
    
    
    public class MyArrayAdapter extends ArrayAdapter<AgendaTo> {
    
        Context context;
        int layoutResourceId;
        ArrayList<AgendaTo> agendas = new ArrayList<AgendaTo>();
    
        public MyArrayAdapter(Context context, int layoutResourceId,
                              ArrayList<AgendaTo> agendas) {
            super(context, layoutResourceId, agendas);
            this.layoutResourceId = layoutResourceId;
            this.context = context;
            this.agendas = agendas;
        }
    
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View item = convertView;
            AgendaWrapper agendaWrapper = null;
    
            if (item == null) {
                LayoutInflater inflater = ((Activity) context).getLayoutInflater();
                item = inflater.inflate(layoutResourceId, parent, false);
                agendaWrapper = new AgendaWrapper();
                agendaWrapper.nome = (TextView) item.findViewById(R.id.textNome);
                agendaWrapper.data = (TextView) item.findViewById(R.id.textData);
                agendaWrapper.edit = (Button) item.findViewById(R.id.btnEdit);
                agendaWrapper.delete = (Button) item.findViewById(R.id.btnDelete);
                item.setTag(agendaWrapper);
            } else {
                agendaWrapper = (AgendaWrapper) item.getTag();
            }
    
            AgendaTo agenda = agendas.get(position);
            agendaWrapper.nome.setText(agenda.getNome());
            SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
            agendaWrapper.data.setText(sdf.format(agenda.getData()));        
    
            agendaWrapper.edit.setOnClickListener(new OnClickListener() {
    
                @Override
                public void onClick(View v) {
                    Toast.makeText(context, "Edit", Toast.LENGTH_LONG).show();
                }
            });
    
            final int absolutePsition = position;
            final AgendaWrapper itemDelete = agendaWrapper;
            final ViewGroup viewGroup = parent;
    
            agendaWrapper.delete.setOnClickListener(new OnClickListener() {
    
                @Override
                public void onClick(View v) {
                    Toast.makeText(context, "Delete " + absolutePsition, Toast.LENGTH_LONG).show();
                    AlertDialog diaBox = AskOption(itemDelete, absolutePsition, viewGroup);
                    diaBox.show();
    
                }
            });
    
            return item;
    
        }
    
        private AlertDialog AskOption(AgendaWrapper agendaWrapper, int position, final ViewGroup viewGroup) {
            final int deletePosition = position;
            AlertDialog myQuittingDialogBox = new AlertDialog.Builder(context)
    			
                    .setTitle("Delete")
                    .setMessage("Do you want to Delete")
    			
                    .setPositiveButton("Delete", new DialogInterface.OnClickListener() {
    
                        public void onClick(DialogInterface dialog, int whichButton) {
                            agendas.remove(deletePosition);
                            refreshListView(agendas, viewGroup);
                            dialog.dismiss();
                        }
    
                        private void refreshListView(final ArrayList<AgendaTo> agendas, final ViewGroup viewGroup) {
                            final MyArrayAdapter myArrayAdapter = new MyArrayAdapter(context, R.layout.list_item, agendas);
                            final LayoutInflater inflater = ((Activity) context).getLayoutInflater();
                            final View view = inflater.inflate(layoutResourceId, viewGroup, false);
                            final ListView listview = (ListView) view.findViewById(R.id.listView);
                            listview.setAdapter(myArrayAdapter);
                        }
    
                    })
                    .setNegativeButton("cancel", new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int which) {
                            dialog.dismiss();
                        }
                    })
                    .create();
    
            return myQuittingDialogBox;
        }
    
    
        static class AgendaWrapper {
            TextView nome;
            TextView data;
            Button edit;
            Button delete;
        }
    
    }

    list_item.xml

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:padding="4dp"
        tools:context=".AgendaActivity" >
    
        <TextView
            android:id="@+id/textNome"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:text="Nome:"
            android:width="50dp"
            android:textAppearance="?android:attr/textAppearanceLarge" />
    
        <TextView
            android:id="@+id/textData"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/textData"
            android:layout_alignTop="@id/textNome"
            android:layout_alignRight="@id/textNome"
            android:layout_alignParentLeft="true"
            android:layout_marginTop="5dp"
            android:width="50dp"
            android:text="Data:"
            android:textAppearance="?android:attr/dateTextAppearance"
            android:textSize="16sp" />
    
        <Button
            android:id="@+id/btnEdit"
            android:layout_width="80dp"
            android:layout_height="40dp"
            android:layout_alignParentRight="true"
            android:layout_alignParentTop="true"
            android:background="#99CC"
            android:focusable="false"
            android:focusableInTouchMode="false"
            android:text="Edit"
            android:textColor="#FFFFFF" />
    
        <Button
            android:id="@+id/btnDelete"
            android:layout_width="80dp"
            android:layout_height="40dp"
            android:layout_alignParentRight="true"
            android:layout_below="@+id/btnEdit"
            android:layout_marginTop="3dp"
            android:background="#99CC"
            android:focusable="false"
            android:focusableInTouchMode="false"
            android:text="Delete"
            android:textColor="#FFFFFF" />
    
    </RelativeLayout>

    activity_agenda.xml

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#990044"
        tools:context="com.test.android.view.AgendaActivity" >
    
        <TextView
            android:id="@+id/listLabel"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true"
            android:text="Touch List"
            android:textColor="#FFFFFF"
            android:textSize="25sp" />
    
        <ListView
            android:id="@+id/listView"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_below="@+id/listLabel"
            android:layout_marginTop="5dp"
            android:cacheColorHint="#FFFFFF" />
    
    </RelativeLayout>

     

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.