gpt4 book ai didi

android - 如何自动更改对下一个列表项的关注

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:03:52 25 4
gpt4 key购买 nike

我正在编写音频播放器应用程序,其中我必须在新歌曲开始时自动将焦点更改为下一个列表项,我可以播放下一首歌曲但无法突出显示该歌曲。

<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:

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

自动切换下一首歌曲的方法

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

适配器类:

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;

}

}

最佳答案

您可以通过以下步骤列表实现此目的:

  1. 通过跟踪 Adapter 中的当前选择来设置所选项目
  2. 执行项目点击
  3. 滚动到所选项目:smoothScrollToPosition(int position)

代码 fragment :

mediaPlayer.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
// First set next position in positionGlobal

//highlight ListItem
audioAdapter.setSelectedItem(position);

// Then perform Click
listview.performItemClick(listview, positionGlobal, listview.getItemIdAtPosition(positionGlobal));

// Scroll to selected position
listview.smoothScrollToPosition(positionGlobal);
}
});

Adapter 类如下所示:

public AudioAdapter(Context context, int resource, ArrayList<Audio> objects) {
public void setSelectedItem(int selectedItem) {
this.selectedItem = selectedItem;
notifyDataSetChange();
}
@Override
public View getView(final int position, View convertView, ViewGroup parent){
// convert view = design
View v = convertView;
// Your code

// set selected Item
if(position == selectedItem) {
// you can define your own color of selected item here
v.setBackgroundColor(StringUtils.getColorFromResources(R.color.light_blue));
} else {
// you can define your own default selector here
v.setBackground(StringUtils.getDrawableFromResources(R.drawable.abs__list_selector_holo_light));
}
}
}

希望能帮到你

关于android - 如何自动更改对下一个列表项的关注,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28209453/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com