我正在使用 baseadapter 类的 getview 方法将数据填充到 listview 中。而且效果很好。我在播放音频文件的每个列表项中都有一个相对布局。我在 getview 方法中使用 onclicklistener ,如下所示。
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View vi = convertView;
if (convertView == null)
vi = inflater.inflate(R.layout.chatbubbles_listrow, null);
context = parent.getContext();
TextView date = (TextView) vi.findViewById(R.id.date);
RelativeLayout playaudio = (RelativeLayout) vi
.findViewById(R.id.audio_image);
HashMap<String, String> events = new HashMap<String, String>();
events = data.get(position);
final String restype = events.get(Conversation.TAG_USERTYPE);
audiopath = events.get(Conversation.TAG_AUDIOPATH);
playaudio.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
stopPlayBack();
Toast.makeText(context, audiopath, Toast.LENGTH_SHORT).show();
Log.e("On Click path", audiopath);
new LoadChats().execute();
}
});
date.setText(restype + audiopath);
return vi;
}
我的列表视图显示的所有信息都正确,但是当我单击相对布局时,会播放正确的音频播放,但是当我单击另一个相对布局时,再次播放相同的音频,这是错误的。每个列表项都有自己的必须播放的音频路径,但这里只有一个较早播放的音频播放。我知道问题出在 playaudio 的 onClicklistner 上,但我没有遇到问题。它让我大吃一惊。请帮忙。
提前致谢