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.
[androidbrasil-dev] Ajuda para Excluir Item do ItemListView utilizando AdapterListView.
12:41 |
Assinar:
Postar comentários (Atom)






0 comentários:
Postar um comentário