2015-01-21 69 views
0

我有“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”的列表视图有他的适配器有按钮,可以向他的主人回复每条评论。当用户按下“响应者”按钮时,另一个活动必须开始回答它(“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”类思考列表视图的每个元素,而不打坐按钮和问题可以在那里,但我不知道我必须把onclicklis每个元素的正确答案。

我想你们都需要帮助我,如果不是这样,请告诉我,我会发布它。 谢谢。

回答

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; 
} 

这应该工作。

+0

谢谢,但它没有奏效。我将在邮政编码上添加此更改。 – Asier 2015-01-21 12:04:07

0

如果你想点击列表视图的小部件,那么你将不得不在你的适配器类中提到你使用适配器类的xml类定义它们。

+0

我不了解你。这些按钮是“comentario”类的属性,它们在适配器和列表的xml元素上定义。 – Asier 2015-01-21 12:11:52

+0

你在哪里得到问题? – 2015-01-21 12:17:18

+0

问题是,当我按下“响应者”按钮时,这将回答列表中的第一个人,不回应我按下按钮的人。 – Asier 2015-01-21 12:27:23

0

解决方案是向按钮添加标签。每个按钮都有他的标签,其中包含您需要获取正确数据的对象。 button.addTag(amigo);在适配器中 您必须使用android:onclick =“handler”设置按钮,并且您的处理程序必须保留在您调用适配器的类中。 该处理程序将标记作为getTag在一个实例上。