首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >列表视图项不是在API 19上点击,而是在上层API上点击

列表视图项不是在API 19上点击,而是在上层API上点击
EN

Stack Overflow用户
提问于 2016-07-31 06:48:07
回答 1查看 89关注 0票数 0

我正在尝试开发一个音乐播放器应用程序。

首先,我从listview中选择一首音乐。然后音乐播放屏幕打开,显示所选择的音乐。同时会出现一个通知。无论您身在何处,只要单击通知,就会打开当前音乐的音乐播放器屏幕。然后,如果你想要,你可以通过按后退按钮进入音乐列表。

在API 19上;在音乐播放屏幕上收到通知并按back按钮后,显示音乐列表,但未点击项目。但是更高的API是没有问题的。

唯一的麻烦;来自API 19的通知面板。

我不能理解这个问题。音乐列表onCreate方法如下。

代码语言:javascript
复制
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.showmusicfiles);

    filesFound=(ListView)findViewById(R.id.files_found);
    items = new ArrayList<FileItem>();

    context = getApplicationContext();

   String path = Environment.getExternalStorageDirectory() +
           File.separator + "MusicApp"+File.separator+"mp3";
     File f = new File(path);
    final File fileList[] = f.listFiles();
    for (File file : f.listFiles()) {

        FileItem item=new FileItem();
        item.setDescription(file.getName());
        item.setFullPath(file.getAbsolutePath());
        items.add(item);
    }

    searchResults=sortByDate(items);

    adapter = new ArrayAdapter<FileItem>(getApplicationContext(), R.layout.music_file_item, searchResults){
        @Override
        public View getView(final int position, View convertView, ViewGroup parent) {
            if(convertView == null){
                convertView = getLayoutInflater().inflate(R.layout.music_file_item, parent, false);
            }

            TextView description = (TextView)convertView.findViewById(R.id.file_description);

            final FileItem searchResult = searchResults.get(position);
            description.setText(searchResult.getDescription().replace(".mp3",""));

            convertView.setOnLongClickListener(new View.OnLongClickListener() {
                @Override
                public boolean onLongClick(View v) {
                    DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            switch (which){
                                case DialogInterface.BUTTON_POSITIVE:
                                    deleteFileFromList(searchResults.get(position).getFullPath(),position);
                                    break;

                                case DialogInterface.BUTTON_NEGATIVE:
                                    toast("yoh dedın");
                                    break;
                            }
                        }
                    };

                    AlertDialog.Builder builder = new AlertDialog.Builder(ShowMusicFiles.this);
                    builder.setMessage("Are you sure you want to delete").setPositiveButton("Yes", dialogClickListener)
                            .setNegativeButton("No", dialogClickListener).show();


                    return true;
                }
            });



            convertView.setOnClickListener(new View.OnClickListener(){
                @Override
                public void onClick(View v){
                    FileTypeList = new ArrayList<File>();
                    FileTypeList = FileItemToFile(searchResults);
                    DescriptionList= new ArrayList<String>();
                    DescriptionList = getDescriptionList(searchResults);

                    playerIntent = new Intent(context, MusicPlayer.class);
                    playerIntent.putExtra("songPosition",position);
                    playerIntent.putExtra("songList",FileTypeList);
                    playerIntent.putExtra("descriptionList",DescriptionList);
                    playerIntent.putExtra("fromWhere","musicList");

                    playerIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    context.startActivity(playerIntent);
                }
            });
            return convertView;
        }
    };

    filesFound.setAdapter(adapter);

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    final ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
    drawer.setDrawerListener(toggle);
    toggle.syncState();

    NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view_music);
    navigationView.setNavigationItemSelectedListener(this);
}

我在音乐播放屏幕上的背压方法只包含了一个intent to go音乐列表页面。所以我不认为我需要写音乐播放代码。

谢谢。

代码语言:javascript
复制
@Override
public void onBackPressed() {
    Intent goToMusicList = new Intent(MusicPlayer.this,ShowMusicFiles.class);
    startActivity(goToMusicList);
}
EN

回答 1

Stack Overflow用户

发布于 2016-07-31 06:58:36

filesFound.setAdapter(adapter)之前调用filesFOund.invalidate()。如果这不能解决问题,请尝试将ShowMusicFiles活动的launchMode设置为singleTop。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38679181

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档