【发布时间】:2017-02-01 09:14:42
【问题描述】:
我有一个列表视图,其中我的歌曲来自列表中的服务,每行都有按钮,即(播放/暂停)按钮。我在完成歌曲时遇到问题,因为如果我的歌曲结束,那么我想执行单击下一行播放按钮,但它执行单击第 4 行按钮。但是如果我增加列表行的高度而不是播放第二个。我也在尝试使用方法 setTag() 和 getTag() 但没有运气。
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
final Planet planet = (Planet) planetList.get(position);
viewHolder = null;
// Create a new row view
if (convertView == null) {
viewHolder = new ViewHolder();
LayoutInflater layoutInflater = (LayoutInflater) contexts.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = layoutInflater.inflate(R.layout.list_rows_relative, parent, false);
viewHolder.playbutton = (ImageView) convertView.findViewById(R.id.CheckBox01);
}
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
viewHolder.playbutton.setTag(position_tag); //position_tag is a int variable
viewHolder.playbutton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final int positiont = mainListView.getPositionForView(parentRow);
String name = planet.getSong_url();
selectedPosition = positiont;
position_tag=selectedPosition;
position_tag=position_tag+1; // if i use this it gives error on complete button perform click
position_tag=1; // if i use this then it plays second song perform second button click
playsong(name);});}
mplayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
int hell = position_tag;
Log.d("position_on",hell+""); //aFTER 1st SONG COMPLETE these value prints "4" but i need next one
viewHolder.checkBox.findViewById(R.id.CheckBox01).findViewWithTag(position_tag).performClick();
}
});
【问题讨论】:
-
你为什么从 mainListView.getPositionForView() 获取位置。您已经将位置标记为播放按钮。然后您可以从播放按钮获取位置。然后,根据按钮位置单击从列表项中获取歌曲名称。
-
我也尝试了这些最终的 int position = (Integer) v.getTag();而不是 getPositionForView() ;但是我在播放按钮上执行了很多操作,所以这就是为什么我需要在歌曲完成时执行按钮单击,但是@ahmed 为什么这些代码适用于 android 电视,因为电视列表行的高度更大,而移动设备的行高度较小。有什么想法吗??
-
还有一件事,Mediaplayer 应该作为服务运行。否则,当您退出应用程序时,播放器将停止播放。
-
求信息人!!
标签: android listview android-mediaplayer baseadapter