Tecnologia do Blogger.
RSS

Re: [androidbrasil-dev] Ajuda para Excluir Item do ItemListView utilizando AdapterListView.

B
runo,
colando o código direto no corpo do email é MUITO ruim de ler. não respeita as indentações e ler o código com tudo preto fica um pouco confuso. utiliza algum serviço de copy paste tipo paste.bin pra enviar.

não consegui identificar um erro na lógica mas pode ter sido por eu ter ficado confuso ao ler este código todo preto. sorry.


Maicon Strey
Novo Hamburgo - RS - Brasil
------------------
------------------
Linux user: #525086


On Wed, Apr 3, 2013 at 4:41 PM, BP-Korp <paignez@gmail.com> wrote:
    Meu problema é o seguinte.
    Quando eu executo o sistema ele preenche a lista com o metodo createListView().
   Ao compilar ele consegue entender todos os numeros dos campos.

    Mas quando eu digito e adiciono um novo registro através do EditText e do Button, quando eu clico em cima ele nao consegue ler o valor da posição do registro dentro do array.

     Esse problema faz com que quando eu clico no botao delete, ele deleta o numero "errado" o mesmo numero errado que ele identificaria na posicao do item dentro do array.

 1- eu precisaria que quando eu adicionasse um registro ele fosse capaz de saber a posição correta do item.
2 - eu precisaria tambem que ele deletasse o item correto ao clicar no botao delete.


alguem pode me ajudar de alguma forma?


Atenciosamente.

BRUNO.


=================================================
Classe MAIN.
=================================================
package com.listteste;

import java.util.ArrayList;

import android.os.Bundle;
import android.app.Activity;
import android.graphics.Color;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;

public class ListaPers extends Activity implements OnItemClickListener
{
    private ListView listView;
    private AdapterListView AdapterListView;
    private ArrayList<ItemListView> itens;
    int i;
    EditText editText;
    Button button1;

    private void setMessage(String message) {
                Log.e(" ListaPersonalisada ", message);
        }

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main); // identifica a ACTIVITY desse codigo

        editText = (EditText)findViewById(R.id.editText1); // identifica o edittext no codigo

        button1 = (Button)findViewById(R.id.button1); // identifica o botao no codigo

        listView = (ListView)findViewById(R.id.listView1); // identifica o ListView
        listView.setOnItemClickListener(this); // recebe o clique do listview

   ////////////// LISTVIEW COMPONENTES //////////////////////////////
        itens = new ArrayList<ItemListView>(); //cria o ArrayList

        createListView(); // metodo que cria a lista

        //criar o adapter
        AdapterListView = new AdapterListView(this, itens);

        //Define o Adapter
        listView.setAdapter(AdapterListView);
        //cor quando é selecionado
        listView.setCacheColorHint(Color.TRANSPARENT);

        button1.setOnClickListener(new View.OnClickListener() {  // recebe o clique do botao.

                        @Override
                        public void onClick(View v) {

                                                AddItem(editText.getText().toString(), R.drawable.atualiza);

                        }
                });
        setMessage(" ON CREATE OK!");
    }


    public void AddItem(String texto, int idImagem){
        ItemListView item = new ItemListView(texto, idImagem);
        itens.add(item);


        AdapterListView.notifyDataSetChanged();
        editText.setText("");
        setMessage(" AddItem OK!");
        }


    private void createListView()
    {
     // Criando a lista e preenchendo

        ItemListView item1 = new ItemListView("Benhur",R.drawable.atualiza);
        ItemListView item2 = new ItemListView("Alcione",R.drawable.atualiza);
        ItemListView item3 = new ItemListView("Chris",R.drawable.atualiza);
        ItemListView item4 = new ItemListView("Benhur",R.drawable.atualiza);


        itens.add(item1);
        itens.add(item2);
        itens.add(item3);
        itens.add(item4);

        setMessage(" createListView OK!");
    }



    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
     //Pega o item que foi selecionado
                ItemListView item = (ItemListView) AdapterListView.getItem(arg2);
     //Demonstraçao
    Toast.makeText(this, "clicou " + item.getTexto(),Toast.LENGTH_LONG).show();

    setMessage(" onItemClick(AdapterView<?> ");

        }
}

===================================================
Classe AdapterListView
===================================================

package com.listteste;

import java.util.ArrayList;

import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.Filter;
import android.widget.Filterable;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

public class AdapterListView extends BaseAdapter implements Filterable {
        private LayoutInflater mInflater;
        private ArrayList<ItemListView> itens;
        private Context context;
    int delpos;

    private void setMessage(String message) {
                Log.e(" AdapterListView ", message);
        }

        public AdapterListView(Context context, ArrayList<ItemListView> itens) {
                // Itens que preencheram o listview
                this.itens = itens;
                // responsavel por pegar o Layout do item
                mInflater = LayoutInflater.from(context);
                this.context = context;

                setMessage("AdapterListView OK!");
        }


        @Override
        public int getCount() {
                setMessage("GetCount");

                return itens.size();
        }


        @Override
        public ItemListView getItem(int position) {
                setMessage("get Position ITem clicado???");
                return itens.get(position);
        }

        @Override
        public long getItemId(int position) {

        setMessage("GET ITEM ID " + position);
        delpos = position;
                return position;
        }

        public View getView(final int position, View convertView, ViewGroup parent) {

                // Pega o item de acordo com a posicao
                final ItemListView item = itens.get(position);

                ViewHolder holder;
                if (convertView == null) {
                        convertView = mInflater.inflate(R.layout.item_listview, null);
                        // Creates a ViewHolder and store references to the two children views we want to bind data to.

                        holder = new ViewHolder();
                        holder.textLine = (TextView) convertView.findViewById(R.id.text);
                        holder.iconLine = (ImageView) convertView.findViewById(R.id.imagemview);
                        holder.buttonLine = (Button) convertView.findViewById(R.id.buttonLine);


                        convertView.setOnClickListener(new OnClickListener() {
                                final int pos = position;

                                public void onClick(View v) {
                                        Toast.makeText(context, "Click -" + pos + item.getTexto(),
                                                        Toast.LENGTH_SHORT).show();
                                }
                        });

                        holder.buttonLine.setOnClickListener(new OnClickListener() {
                        final int pos = position;

                        @Override
                                public void onClick(View v) {
                                        Toast.makeText(context, "Delete - " + String.valueOf(pos) + " ",Toast.LENGTH_SHORT).show();

                                   itens.remove(pos);
                  notifyDataSetChanged();

                    setMessage("Remove OK! "+ pos);
                                }
                        });

                        convertView.setTag(holder);
                } else {
                        // Get the ViewHolder back to get fast access to the TextView
                        // and the ImageView.
                        holder = (ViewHolder) convertView.getTag();
                }


                // Bind the data efficiently with the holder.
                holder.iconLine.setImageResource(item.getIconeRid());
                holder.textLine.setText(item.getTexto());
                return convertView;

        }


@Override
public void notifyDataSetChanged() {
        getItemId(delpos);
        super.notifyDataSetChanged();
}



        static class ViewHolder {
                TextView textLine;
                ImageView iconLine;
                Button buttonLine;
        }

        @Override
        public Filter getFilter() {
                // TODO Auto-generated method stub
                return null;
        }


}

--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.



--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
 
 

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

0 comentários:

Postar um comentário