Você está usando uma variável local 'notificacao' no adapter, que é 'sobreescrita' a cada chamada do getView(), seu listener vai sempre abrir o mesmo item (o último que passou pelo getView())
Lúcio Maciel
luciofm@gmail.com
luciofm@gmail.com
On Thu, Dec 5, 2013 at 11:59 PM, Douglas Cerqueira <douglasdacruzz@gmail.com> wrote:
--O que eu tenho, tenho um customadapter, e em alguns views tenho onclicks, por exemplo, no view da foto do usuario, tenho um onclick para abrir o perfil do usuario, no view da foto da postagem tenho um onclick para abrir a postagem.Qual o problema?Na listview, quando click em um view, os dados abertos são os do proximo item do listview.O código pra terem uma ideia
import java.text.SimpleDateFormat;import java.util.List;import android.content.Context;import android.content.Intent;import android.view.LayoutInflater;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.TextView;import com.example.dice.R;import com.niners.dice.model.Notificacao;import com.niners.dice.util.VisualizarPerfilAsyncTask;public class AdapterResumoNotificacao extends BaseAdapter {private List<Notificacao> notificacoes;private LayoutInflater mInflater;private ViewHolder holder;private Context mContext;private Notificacao notificacao;static class ViewHolder {private TextView titulo;private TextView status;private TextView endereco;private ImageView midias;private TextView apoio;private TextView comentario;private TextView data;private ImageView fotoUser;private TextView nomeUser;private LinearLayout perfil;}public AdapterResumoNotificacao(Context context,List<Notificacao> notificacoes) {this.mInflater = LayoutInflater.from(context);this.notificacoes = notificacoes;this.mContext = context;}@Overridepublic int getCount() {return notificacoes.size();}@Overridepublic Notificacao getItem(int position) {return notificacoes.get(position);}
@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {if (convertView == null) {convertView = mInflater.inflate(R.layout.adapter_notif, null);holder = new ViewHolder();holder.titulo = (TextView) convertView.findViewById(R.id.resumoNotifTitulo);holder.status = (TextView) convertView.findViewById(R.id.resumoNotifStatus);holder.endereco = (TextView) convertView.findViewById(R.id.resumoNotifLocal);holder.midias = (ImageView) convertView.findViewById(R.id.resumoNotifImage);holder.apoio = (TextView) convertView.findViewById(R.id.resumoNotificacaoNumeroApoio);holder.comentario = (TextView) convertView.findViewById(R.id.resumoNotifNumeroComent);holder.data = (TextView) convertView.findViewById(R.id.resumoNotifHorario);holder.fotoUser = (ImageView) convertView.findViewById(R.id.resumoNotifImagerUser);holder.nomeUser = (TextView) convertView.findViewById(R.id.resumoNotifNomeUser);holder.perfil = (LinearLayout) convertView.findViewById(R.id.resumoNotifPerfilUser);convertView.setTag(holder);} else {holder = (ViewHolder) convertView.getTag();}notificacao = notificacoes.get(position);holder.titulo.setText(notificacao.getTitulo());holder.status.setText(mContext.getString(R.string.notificacao_status)+ ": " + notificacao.getStatus());// holder.endereco.setText(n.endereco());holder.apoio.setText(notificacao.getNumeroApoios() + " "+ mContext.getString(R.string.notificacao_apoio));holder.comentario.setText(notificacao.getNumeroComentarios() + " "+ mContext.getString(R.string.notificacao_comentarios));SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");holder.data.setText(sdf.format(notificacao.getData()));// holder.midias.setImageBitmap(n.midiaPrincipal());// holder.fotoUser.setImageBitmap(n.getAutor().getFoto());holder.nomeUser.setText(notificacao.getAutor().getNome().toUpperCase());holder.titulo.setOnClickListener(abrirNotificacao);holder.midias.setOnClickListener(abrirNotificacao);holder.fotoUser.setOnClickListener(abrirPerfil);holder.nomeUser.setOnClickListener(abrirPerfil);holder.perfil.setOnClickListener(abrirPerfil);return convertView;}private OnClickListener abrirPerfil = new OnClickListener() {@Overridepublic void onClick(View v) {new VisualizarPerfilAsyncTask(mContext).execute("http://adam.uefs.br/Dice//usuario?id="+ notificacao.getAutor().getId());}};private OnClickListener abrirNotificacao = new OnClickListener() {
@Overridepublic void onClick(View v) {Intent it = new Intent(mContext, NotificacaoEscolhida.class);it.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);it.putExtra("notificacao", notificacao);mContext.startActivity(it);}};}Aqui é adicionado o evento click ao tituloholder.titulo.setOnClickListener(abrirNotificacao);E o evento implementadoSempre que clico em um titulo abre o objeto errado :/private OnClickListener abrirNotificacao = new OnClickListener() {
@Override
public void onClick(View v) {
Intent it = new Intent(mContext, NotificacaoEscolhida.class);
it.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
it.putExtra("notificacao", notificacao);
mContext.startActivity(it);
}
};Já tentei muita coisa pra resolver isso e nada, alguma ideia?
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.






0 comentários:
Postar um comentário