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; }
@Override public int getCount() { return notificacoes.size(); }
@Override public Notificacao getItem(int position) { return notificacoes.get(position); }
@Override public long getItemId(int position) { return position; }
@Override public 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() {
@Override public void onClick(View v) { new VisualizarPerfilAsyncTask(mContext) .execute("http://adam.uefs.br/Dice//usuario?id=" + notificacao.getAutor().getId()); } };
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); } };}
Aqui é adicionado o evento click ao titulo
holder.titulo.setOnClickListener(abrirNotificacao);E o evento implementado
Sempre 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