criei uma ListActivity , porem quando clico em um item da lista o evento onListItemClick não é chamado nunca…
o q pode ser?
[code]
import java.util.ArrayList;
import android.app.ListActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ListView;
import android.widget.Toast;
public class ListSelectContactsActivity extends ListActivity
{
private ArrayList<GridSelectContactsDataController> list;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
// Setei minha activity com o arquivo layout criado
setContentView(R.layout.tela_selecionar_contatos);
list = new ArrayList<GridSelectContactsDataController>();
SelectContactsListAdapterController selectContactsListAdapterController = new SelectContactsListAdapterController(this, list);
// Agora vou popular minha lista
this.getListView().setAdapter(selectContactsListAdapterController);
ArrayList<Contato> androidContacts = selectContactsListAdapterController.getAndroidContacts();
// criar os dados da minha lista
for (Contato contact : androidContacts)
{
list.add(new GridSelectContactsDataController(false, contact.getNomeContato()));
}
// Habilita o scroll rápido na lista
this.getListView().setFastScrollEnabled(true);
}
@Override
protected void onListItemClick(ListView list, View view, int position,
long id) {
Toast.makeText(ListSelectContactsActivity.this,
"contato selecionado : " + this.list.get(position).getContactName(),
Toast.LENGTH_SHORT).show();
}
}[/code]
import java.util.ArrayList;
import android.content.ContentResolver;
import android.content.Context;
import android.database.Cursor;
import android.provider.ContactsContract;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.CheckBox;
import android.widget.TextView;
import android.widget.Toast;
public class SelectContactsListAdapterController extends BaseAdapter
{
private Context context;
private ArrayList<GridSelectContactsDataController> list;
public SelectContactsListAdapterController(Context context, ArrayList<GridSelectContactsDataController> list) {
this.context = context;
this.list = list;
}
public int getCount() {
return list.size();
}
public Object getItem(int position) {
return list.get(position);
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
// Inflando o layout das linhas, ou seja, aqui eu defino que as linhas serão
// conforme o arquivo de layout "R.layout.row_layout"
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(R.layout.selecionar_contatos_row, null);
// Recuperando as views do layout
TextView name = (TextView) view.findViewById(R.id.txtNameContact);
CheckBox checkSelect = (CheckBox) view.findViewById(R.id.checkSectContact);
// Setando os dados no layout inflado
// Dados estes que vem da minha lista
name.setText(list.get(position).getContactName());
checkSelect.setChecked(list.get(position).isContactSelect());
return view;
}
public ArrayList<Contato> getAndroidContacts()
{
ArrayList<Contato> androidContacts = new ArrayList<Contato>();
ContentResolver cr = context.getContentResolver();
Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
if (cur.getCount() > 0)
{
while (cur.moveToNext())
{
if (Integer.parseInt(cur.getString(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0)
{
String id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID));
String name = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
/*
* Se o contato tiver algum telefone registrado, adiciona-se os telefones dele em uma string
*que sera atribuida ao objeto referente ao contato do loop
*/
String phones = "";
Cursor pCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = ?", new String[]{id}, null);
while (pCur.moveToNext())
{
String phoneNo = pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
if (phones != "")
phones += "*"+phoneNo;
else
phones += phoneNo;
}
pCur.close();
/*
* Adiciona-se os telefones do contato em uma string
*que sera atribuida ao objeto referente ao contato do loop
*/
String emails = "";
Cursor emailCur = cr.query( ContactsContract.CommonDataKinds.Email.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?",
new String[]{id}, null);
while (emailCur.moveToNext())
{
String email = emailCur.getString(emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
if (phones != "")
emails += "*"+email;
else
emails += email;
}
emailCur.close();
// cria o objeto referente ao contato da iteracao
Contato contact = new Contato ();
contact.setIdContato(id);
contact.setPrioridade(PrioridadeEnum.ALTA);
contact.setNomeContato(name);
contact.setEmail(emails);
contact.setNumCelular(phones);
contact.setEstatus(EstatusEnum.ATIVO);
//adiciona o contato na lista de contatos
androidContacts.add(contact);
}
}
}
return androidContacts;
}
}
public class GridSelectContactsDataController
{
private boolean contactSelect;
private String contactName;
public GridSelectContactsDataController(boolean contactSelect,String contactName)
{
this.contactSelect = contactSelect;
this.contactName = contactName;
}
public boolean isContactSelect() {
return contactSelect;
}
public void setContactSelect(boolean contactSelect) {
this.contactSelect = contactSelect;
}
public String getContactName() {
return contactName;
}
public void setContactName(String contactName) {
this.contactName = contactName;
}
}
[code]<?xml version="1.0" encoding="utf-8"?>
<Button android:text="Search" android:id="@+id/button2"
android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
</TableRow>
</TableLayout>
<ListView android:id="@android:id/list" android:layout_height="wrap_content"
android:layout_width="match_parent"></ListView>
[/code]
[code]<?xml version="1.0" encoding="utf-8"?>
<TableLayout
android:id="@+id/tableLayout"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:padding="10dp"
android:stretchColumns="0" >
<TableRow
android:id="@+id/rowList"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<CheckBox
android:id="@+id/checkSectContact"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/txtNameContact"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
</TextView>
</TableRow>
</TableLayout>
[/code]
Alguem sabe o pq o evento de clique na lista nao eh chamado?