KPRF2009 2012-11-29 02:30 采纳率: 50%
浏览 10835

android 动态添加了button后,怎么给button设置监听器?

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


}

}

  • 写回答

6条回答

  • gouxiaojin 2012-11-29 02:53
    关注
    private OnClickListener clickHandler= new OnClickListener() {
    
        @Override
            public void onClick(View v) {
    // 写你要实现的方法
    }
    
    }
    
    button.setOnClickListener(clickHandler);//添加监听器
    
    评论

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题