我想在当前播放的歌曲上绘制一个小图标。使用notifyDataSetChanged()时Listview不更新新更改

问题描述 投票:0回答:2
您好,我开发了Media Player,可以播放原始文件中的歌曲。我有歌曲列表的列表视图。我可以在当前播放的歌曲上绘制一个小图标,但是当我在列表视图中向上或向下滚动时,该图标消失了。我希望小图标保留在播放的歌曲上,并在下一首歌曲开始播放并设置为新歌曲时从当前歌曲中删除。

Evrything工作正常,但Listview没有更新。

这是适配器

public class SongAdapter extends BaseAdapter { private int[] iconImage; private String[] indexText; private String[] englishText; private LayoutInflater myInflater; //Constructor public SongAdapter(Context c, String[] aIndexText, String[] aEnglishText, int[] aIconImage) { iconImage = aIconImage; indexText = aIndexText; englishText = aEnglishText; myInflater = (LayoutInflater) c.getSystemService(Context.LAYOUT_INFLATER_SERVICE); } @Override public int getCount() { return englishText.length; } @Override public Object getItem(int position) { return indexText[position] + " " + englishText[position]; } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { View myView = myInflater.inflate(R.layout.songs_detail_layout, null); ImageView iconImageView = myView.findViewById(R.id.iconImageView); TextView indexTextView = myView.findViewById(R.id.IndexTextView); TextView englishTextView = myView.findViewById(R.id.englishTextView); iconImageView.setImageResource(iconImage[position]); indexTextView.setText(indexText[position]); englishTextView.setText(englishText[position]); //Make all icons invisible iconImageView.setVisibility(View.INVISIBLE); return myView; } }

这是MainActivity

公共类MainActivity扩展了AppCompatActivity {

private SongAdapter mySongAdapter; private Field[] fields; private MediaPlayer mp; private ListView lv; private ArrayList<String> myArrayList=new ArrayList<>(); private Button btnPlay; private Button btnNxt; private Button btnRep; private Button btnShuf; private Button btnAto; private TextView elapsedTimeLabel; private TextView remainingTimeLabel; private SeekBar seekBar = null; private int resId = 0; private int position = 0; private int newPosition = 0; private Toast toast; private TextView titleTextView; private Boolean shuffle = false; private Boolean paused = false; private Boolean isAuto = false; private volatile Boolean stopThread = false; private Random rand = new Random(); private ImageView indexImageView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); try { lv = findViewById(R.id.songsListView); int[] iconImage = {R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp, R.drawable.ic_play_circle_outline_white_24dp }; String[] indexText = getResources().getStringArray(R.array.indexText); String[] englishText = getResources().getStringArray(R.array.englishText); seekBar = findViewById(R.id.seekBar); btnPlay = findViewById(R.id.btnPlay); btnNxt = findViewById(R.id.btnNxt); Button btnPv = findViewById(R.id.btnPv); Button btnFF = findViewById(R.id.btnFF); Button btnFB = findViewById(R.id.btnFB); btnRep = findViewById(R.id.btnRep); btnShuf = findViewById(R.id.btnShuf); btnAto = findViewById(R.id.btnAuto); elapsedTimeLabel = findViewById(R.id.elapsedTimeLabel); remainingTimeLabel = findViewById(R.id.remainingTimeLabel); titleTextView = findViewById(R.id.titleTextView); indexImageView = findViewById(R.id.iconImageView); mySongAdapter = new SongAdapter(this, indexText, englishText, iconImage); lv.setAdapter(mySongAdapter); }catch (NullPointerException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { try { if (resId == position) { view.findViewById(R.id.iconImageView).setVisibility(View.VISIBLE); } else { view.findViewById(R.id.iconImageView).setVisibility(View.INVISIBLE); } mySongAdapter.notifyDataSetChanged(); lv.setFastScrollEnabled(true); lv.isScrollingCacheEnabled(); } catch (NullPointerException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } });

实际上,我想实施在这里How to set icon over current playing song from listview in android?中找到的此解决方案

将图标添加到列表视图中使其首先不可见,然后用Java编写代码

if(SongIndex !=position){ Image.setvisibility(View.Invisible) } else{ Image.setvisibility(View.Visible) } notifydatasetchanged();

我想我做了所有这些,但是在调用notifydatasetchanged()时遇到问题。列表视图没有更新。

非常感谢任何人的帮助或参与。

您好,我开发了Media Player,可以播放原始文件中的歌曲。我有歌曲列表的列表视图。我可以在当前播放的歌曲上绘制一个小图标,但是当我滚动浏览...

android listview media-player
2个回答
1
投票
我建议您使用

RecyclerView


1
投票
为此,您可以为每个歌曲项目创建一个model class。喜欢
© www.soinside.com 2019 - 2024. All rights reserved.