android 动态添加了button后,怎么给button设置监听器?
类似微信一样,我收到了语音消息,我在主界面上添加了一个按钮,这个按钮怎么添加监听器?点击后就可以播放我收到的那条消息。
我已经用listview动态添加item(是一个button)了,就是不知道每一个item怎么设置点击后播放不同的声音。。。
private void send()
{
if(flag==0)//发送的是文字
{
sendContString = mEditTextContent.getText().toString();
if (sendContString.length() > 0)
{
ChatMsgEntity entity = new ChatMsgEntity();
entity.setDate(getDate());
entity.setName("syskey");
entity.setMsgType(false);
entity.setText(sendContString);
entity.setKind(1);
mDataArrays.add(entity);
new Thread(new Runnable() {
@Override
public void run() {
try {
new Client().send(ip, port,sendContString,1,Aname,Bname);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}).start();
}
}
else//发送的是语音
{
ChatMsgEntity entity = new ChatMsgEntity();
entity.setDate(getDate());
entity.setName("syskey");
entity.setMsgType(false);//表示是自己发的
entity.setText(pathWav);//录音后存放的声音的地址
entity.setKind(2);//种类是2表示是声音
mDataArrays.add(entity);
}
mAdapter.notifyDataSetChanged();//刷新
mEditTextContent.setText("");
mListView.setSelection(mListView.getCount() - 1);//指向最后一个
}
/////////////////////分割线////////////////////////////
package com.myweixin;
import android.R.integer;
import android.content.Context;
import android.database.DataSetObserver;
import android.media.MediaPlayer;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.CheckBox;
import android.widget.LinearLayout;
import android.widget.TextView;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class ChatMsgViewAdapter extends BaseAdapter {
public static interface IMsgViewType
{
int IMVT_COM_MSG = 0;
int IMVT_TO_MSG = 1;
}
private static final String TAG = ChatMsgViewAdapter.class.getSimpleName();
private List<ChatMsgEntity> coll;
private Context ctx;
private ChatMsgEntity entity;
private LayoutInflater mInflater;
private ViewHolder viewHolder = null;
private String position1;
public ChatMsgViewAdapter(Context context, List<ChatMsgEntity> coll) {
ctx = context;
this.coll = coll;
mInflater = LayoutInflater.from(context);
}
public int getCount() {
return coll.size();
}
public Object getItem(int position) {
return coll.get(position);
}
public long getItemId(int position) {
return position;
}
public int getItemViewType(int position) {
// TODO Auto-generated method stub
ChatMsgEntity entity = coll.get(position);
if (entity.getMsgType())
{
return IMsgViewType.IMVT_COM_MSG;
}else{
return IMsgViewType.IMVT_TO_MSG;
}
}
public int getViewTypeCount() {
// TODO Auto-generated method stub
return 2;
}
public View getView(int position, View convertView, ViewGroup parent) {
this.position1=position+"";
entity = coll.get(position);
boolean isComMsg = entity.getMsgType();
if (convertView == null)
{
if (isComMsg)
{
convertView = mInflater.inflate(R.layout.chatting_item_msg_text_left, null);
}else{
convertView = mInflater.inflate(R.layout.chatting_item_msg_text_right, null);
}
viewHolder = new ViewHolder();
viewHolder.tvSendTime = (TextView) convertView.findViewById(R.id.tv_sendtime);
viewHolder.tvUserName = (TextView) convertView.findViewById(R.id.tv_username);
viewHolder.tvContent = (TextView) convertView.findViewById(R.id.tv_chatcontent);
viewHolder.isComMsg = isComMsg;
//添加监听事件
// if(entity.getKind()==2)
// {
//
// viewHolder.tvContent.setOnClickListener(new OnClickListener() {
//
// @Override
// public void onClick(View v) {//设置监听器
// //play(viewHolder.tempTextView.getText().toString());
//
// }
// });
// }
convertView.setTag(viewHolder);
}else{
viewHolder = (ViewHolder) convertView.getTag();
}
viewHolder.tvSendTime.setText(entity.getDate());
viewHolder.tvUserName.setText(entity.getName());
if(entity.getKind()==1)
viewHolder.tvContent.setText(entity.getText());
else{
viewHolder.tvContent.setText("语音-点击播放");
viewHolder.tvContent.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {//设置监听器
Log.i("BBB", position1);
}
});
}
return convertView;
}
static class ViewHolder {
public TextView tvSendTime;
public TextView tvUserName;
public TextView tvContent;
public TextView tempTextView;
public boolean isComMsg = true;
}
private void play(String url)
{
try {
MediaPlayer mp = new MediaPlayer();
mp.reset();
mp.setDataSource(url);
mp.prepare();
mp.start();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}