2015-01-21 72 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在一個實例上。