Piszę aplikację Audio Player, w której muszę automatycznie zmienić ostrość na następny element listy po rozpoczęciu nowej piosenki, jestem w stanie odtworzyć następny utwór, ale nie mogę zaznaczyć tej piosenki .Automatyczne ustawianie fokusu na następnym elemencie listy
<ListView
android:id="@+id/list_slidermenu"
android:layout_height="0dp"
android:layout_width="match_parent"
android:layout_weight="8"
android:layout_gravity="start"
android:scrollbars="none"
android:fastScrollEnabled="true"
android:choiceMode="singleChoice"
android:listSelector="@drawable/list_selector"
/>
ListView na click słuchacza:
listview.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View view, int position,
long id) {
// TODO Auto-generated method stub
positionGlobal = position;
strNURL = audiosArrayList.get(positionGlobal).getUrl().toString();
strNTITLE = audiosArrayList.get(positionGlobal).getTitle().toString();
if(mediaPlayer!=null && mediaPlayer.isPlaying())
try {
mediaPlayer.stop();
} catch (Exception e) {
}
play();
textTrack.setText(strNTITLE);
}
});
}
Metoda z zastosowaniem aby przełączyć się do następnego utworu automatycznie
public void next() {
if (positionGlobal == (audiosArrayList.size()-1)) {
positionGlobal = 0;
strNURL = audiosArrayList.get(positionGlobal).getUrl().toString();
strNTITLE = audiosArrayList.get(positionGlobal).getTitle().toString();
current_position = 0;
mediaPlayer.seekTo(current_position);
if(mediaPlayer!=null && mediaPlayer.isPlaying())
try {
mediaPlayer.stop();
} catch (Exception e) {
}
play();
textTrack.setText(strNTITLE);
}
else if(positionGlobal < audiosArrayList.size()) {
positionGlobal = positionGlobal+1;
strNURL = audiosArrayList.get(positionGlobal).getUrl().toString();
strNTITLE = audiosArrayList.get(positionGlobal).getTitle().toString();
current_position = 0;
mediaPlayer.seekTo(current_position);
if(mediaPlayer!=null && mediaPlayer.isPlaying())
try {
mediaPlayer.stop();
} catch (Exception e) {
}
play();
textTrack.setText(strNTITLE);
}
}
klasa adaptera:
public class AudioAdapter extends BaseAdapter {
ArrayList<Audio> actorList;
LayoutInflater vi;
int Resource;
ViewHolder holder;
Context context;
public AudioAdapter(Context context, int resource, ArrayList<Audio> objects) {
this.context = context;
this.vi = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
this.Resource = resource;
this.actorList = objects;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return actorList.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return actorList.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
// convert view = design
View v = convertView;
if (v == null) {
holder = new ViewHolder();
v = vi.inflate(Resource, null);
holder.tvName = (TextView) v.findViewById(R.id.title);
v.setTag(holder);
} else {
holder = (ViewHolder) v.getTag();
}
holder.tvName.setText(actorList.get(position).getTitle());
return v;
}
static class ViewHolder {
public TextView tvName;
}
}
użytkowania notifyDataSetchnage api, aby powiadomić ListView chnages – KOTIOS
@diva gdzie muszę używać audioAdapter.notifyDataSetChanged(); ? – Sun
czy możesz wskazać, gdzie przeglądasz listę? – KOTIOS