Complementando a resposta do Lúcio: uma forma de resolver, seria vc passar o indice do item selecionado como um tag para a view que dispara o evento:
Em quinta-feira, 5 de dezembro de 2013 23h59min53s UTC-2, Douglas Cerqueira escreveu:
-- holder.titulo.setTag(position)
....
public void onClick(View v) {
int position = v.getTag();
notificacao = notificacoes.get(position);
.....
Em quinta-feira, 5 de dezembro de 2013 23h59min53s UTC-2, Douglas Cerqueira escreveu:
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 ideiaimport 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.






0 comentários:
Postar um comentário