我有一个“comentario”元素列表,这是comentario类:
public class Comentario {
private String comentarista;
private String comentario;
private Button boton;
public Comentario(String nombre, String comentario){
this.comentario=comentario;
this.comentarista= nombre;
}
public String getComentarista() {
return comentarista;
}
public void setComentarista(String comentarista) {
this.comentarista = comentarista;
}
public String getComentario() {
return comentario;
}
public void setComentario(String comentario) {
this.comentario = comentario;
}
public Button getBoton() {
return boton;
}
public void setBoton(Button boton) {
this.boton = boton;
}
}
“comentario”的listview有他的适配器,有按钮用于回答每个评论给他的主人。当用户按下“响应者”按钮时,另一个活动必须开始回答它(“ActivityRespuestaComentario”)。但是,当我按下“ActivityRespuestaComentario”按钮时,此活动会从适配器接收通过捆绑包调用它的任何名称,并且该注释的答案适用于列表中任何评论的所有者。
这是“ActivityRespuestaComentario”活动:
package com.example.pestanasholacampus;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class ActivityRespuestaComentario extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.actividad_respuestaenperfil);
Intent intent= getIntent();
Bundle bundle= intent.getExtras();
String destinatario;
if(bundle!=null){
destinatario= bundle.getString("NombreDestinatario");
System.out.println("El destinatario es:"+ destinatario);
}
Button botonEnviarRespuesta= (Button) findViewById(R.id.botonEnviaRespuestaComentario);
botonEnviarRespuesta.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//Aqui debemos añadir el comentario a la lista de comentarios del destinatario en la base de datos.
System.out.println("Comentario añadido.");
finish();
}
});
}
这是适配器,它为列表视图的每个按钮都有onclicklistener:
package com.example.pestanasholacampus;
import java.util.ArrayList;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.sax.StartElementListener;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
@SuppressLint("ViewHolder") public class ComentarioenPerfilAdapter extends BaseAdapter {
protected Activity activity;
protected ArrayList<Comentario> comentarios;
Context mcontext;
TextView nombre;
public ComentarioenPerfilAdapter(Activity activity, ArrayList<Comentario> comentarios, Context context){
this.activity= activity;
this.comentarios= comentarios;
this.mcontext= context;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return comentarios.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return comentarios.get(position);
}
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return arg0;
}
@SuppressLint("InflateParams")
@Override
public View getView(int position, View arg1, ViewGroup arg2) {
LayoutInflater inf=(LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);;
View v= inf.inflate(R.layout.comentariolistperfil,null);
//Asociar el layout de la lista que hemos creado.
//Definimos un objeto a partir del array, vamos a cargar el contenido
//de ese objeto en el view de la lista.
Comentario comentario= comentarios.get(position);
//Cargamos el nombre del comentarista.
nombre= (TextView)v.findViewById(R.id.nombreComentarista);
nombre.setText(comentario.getComentarista());
//Cargamos el comentario
TextView coment= (TextView)v.findViewById(R.id.comentario);
coment.setText(comentario.getComentario());
//Cargamos el boton
Button boton= (Button)v.findViewById(R.id.botonResponder);
boton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
System.out.println("Boton responder comentario pulsado");
Intent intent = new Intent(mcontext,ActivityRespuestaComentario.class);
intent.setFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra("NombreDestinatario", nombre.getText());
mcontext.startActivity(intent);
}
});
return v;
}
}
我做了“Comentario”课程,对列表视图中的每个元素进行思考而不考虑按钮,问题可能就在那里,但我不知道我必须将每个元素的onclicklistener正确地放到他的主人身上。
我想你们所有人都需要帮助我,如果不是,请告诉我,我会发布它。 谢谢你。
答案 0 :(得分:0)
更改以下方法
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return 0;
}
到
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return arg0;
}
这应该有效。
答案 1 :(得分:0)
如果要单击listview的小部件,则必须在适配器类中提及使用适配器类的xml类定义它们的位置。
答案 2 :(得分:0)
解决方案是在按钮上添加标签。每个按钮都有自己的标签,其中包含获取正确数据所需的对象。 button.addTag(AMIGO);在适配器中 您必须使用android:onclick =“handler”设置按钮,并且您的处理程序必须保留在您调用适配器的类中。 此处理程序将标记作为getTag通过一个实例。