Привет друзья У меня есть список, в котором у меня есть песни из службы в списке, когда-либо в строке которого есть кнопка, которая является (Play/Pause). У меня возникла проблема с On On of songs, потому что, если моя песня заканчивается, я хочу выполнить щелчок на кнопке «Следующая строка», но она выполняет щелчок по кнопке 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(). Вы уже пометили позицию в playbutton. то вы можете получить позицию с кнопки воспроизведения. затем, получите название песни из элемента списка, в зависимости от нажатия кнопки. – Noorul
Я также пробую эту окончательную позицию int = (целое число) v.getTag(); вместо getPositionForView(); но у меня есть так много вещей на кнопке воспроизведения, поэтому мне нужно выполнить щелчок на кнопке, по завершении песни, но @ahmed, почему этот код работает для Android-Tv beacuse. Строки списка ТВ больше по высоте, а мобильные - с небольшими рядами высоты. Есть идеи?? –
И еще одно: Mediaplayer должен работать как сервис. в противном случае проигрыватель перестанет играть, когда вы выйдете из приложения. – Noorul