Tecnologia do Blogger.
RSS

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

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.

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

0 comentários:

Postar um comentário