2016-06-09 69 views
1

我只想播放列表中选定的mp3文件。获取onItemClick的位置,但没有来自listview的响应。我想播放列表视图中选定的MP3文件

从SDCard获取mp3文件。 请帮我 在此先感谢。

我的片段

ListView lv_recordersList; 
private ListViewAdapter adapter; 
ProgressDialog mProgressDialog; 
private List<String> myList; 
File file; 


     public View onCreateView(LayoutInflater inflater, ViewGroup container, 
       Bundle savedInstanceState) { 
      // TODO Auto-generated method stub 

      View v = inflater.inflate(R.layout.frag_recorders_list, null); 
      lv_recordersList = (ListView) v.findViewById(R.id.lv_recordersList); 

      myList = new ArrayList<String>(); 


      new DownloadJSON().execute(); 

     lv_recordersList.setOnItemClickListener(new OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> parent, View view, 
       int position, long id) { 
      // TODO Auto-generated method stub 
      String value = lv_recordersList.getItemAtPosition(position).toString(); 

      System.out.println("####### Value OnItemClick : " +value); 

      try { 
      mMediaPlayer.setDataSource(value); 
       mMediaPlayer.prepare(); 
       mMediaPlayer.start(); 
      } catch (IllegalArgumentException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } catch (SecurityException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } catch (IllegalStateException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } catch (IOException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 
     } 
    }); 

      return v; 
     } 



    public class DownloadJSON extends AsyncTask<Void, Void, Void>{ 

     @Override 
     protected void onPreExecute() { 
      // TODO Auto-generated method stub 
      super.onPreExecute(); 

      mProgressDialog = new ProgressDialog(getActivity()); 
      //mProgressDialog.setTitle("PlugLeads"); 
      mProgressDialog.setMessage("Loading..."); 
      mProgressDialog.setIndeterminate(false); 
      mProgressDialog.show(); 

     } 


     @Override 
     protected Void doInBackground(Void... params) { 
      // TODO Auto-generated method stub 

      File directory = Environment.getExternalStorageDirectory(); 
      file = new File(directory + "/Plugleads"); 
      File list[] = file.listFiles(); 

      for (int i = 0; i < list.length; i++) { 
       // if(checkExtension(list[i].getName()) 
       if (checkExtension(list[i].getName())) { 
        myList.add(list[i].getName()); 
       } 
      } 


      return null; 
     } 




     @Override 
     protected void onPostExecute(Void result) { 
      // TODO Auto-generated method stub 
      super.onPostExecute(result); 
      //listview = (ListView) findViewById(R.id.listview); 
      // Pass the results into ListViewAdapter.java 
      adapter = new ListViewAdapter(getActivity(), myList); 
      // Set the adapter to the ListView 
      lv_recordersList.setAdapter(adapter); 
      // Close the progressdialog 
      mProgressDialog.dismiss(); 
     } 



     private boolean checkExtension(String fileName) { 
      String ext = getFileExtension(fileName); 
      if (ext == null) 
       return false; 
      try { 
       if (SupportedFileFormat.valueOf(ext.toUpperCase()) != null) { 
        return true; 
       } 
      } catch (IllegalArgumentException e) { 
       return false; 
      } 
      return false; 
     } 

     public String getFileExtension(String fileName) { 
      int i = fileName.lastIndexOf('.'); 
      if (i > 0) { 
       return fileName.substring(i + 1); 
      } else 
       return null; 
     } 


    } 

我的自定义BaseAdapter getView():

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    // TODO Auto-generated method stub 

    ImageView img_recorders_listitem; 
    TextView tv_recorders_listitem; 

    inflater = (LayoutInflater) context 
      .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 


    View itemView = inflater.inflate(R.layout.frag_recorders_listitem, parent, false); 

    img_recorders_listitem = (ImageView) itemView.findViewById(R.id.img_recorders_listitem); 
    tv_recorders_listitem = (TextView) itemView.findViewById(R.id.tv_recorders_listitem); 


    //resultp = data.get(position); 
    System.out.println("$$$$$$$ ListP : " +myListp); 

    pos = myListp.get(position); 

    System.out.println("$$$$$$$ Pos : " +pos); 


    tv_recorders_listitem.setText(pos); 


    mMediaPlayer = new MediaPlayer(); 


    return itemView; 
} 

我logcat的

06-09 13:05:54.787: I/System.out(16669): ####### Value OnItemClick : gshsh_07-06-2016_12_11_17.mp3 
06-09 13:05:54.803: W/System.err(16669): java.io.IOException: setDataSource failed. 
06-09 13:05:54.804: W/System.err(16669): at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1086) 
06-09 13:05:54.808: W/System.err(16669): at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1032) 
06-09 13:05:54.809: W/System.err(16669): at com.plugleads.feedback.record.Frag_RecordersList$1.onItemClick(Frag_RecordersList.java:69) 
06-09 13:05:54.809: W/System.err(16669): at android.widget.AdapterView.performItemClick(AdapterView.java:305) 
06-09 13:05:54.809: W/System.err(16669): at android.widget.AbsListView.performItemClick(AbsListView.java:1146) 
06-09 13:05:54.809: W/System.err(16669): at android.widget.AbsListView$PerformClick.run(AbsListView.java:3053) 
06-09 13:05:54.809: W/System.err(16669): at android.widget.AbsListView$3.run(AbsListView.java:3860) 
06-09 13:05:54.809: W/System.err(16669): at android.os.Handler.handleCallback(Handler.java:739) 
06-09 13:05:54.814: W/System.err(16669): at android.os.Handler.dispatchMessage(Handler.java:95) 
06-09 13:05:54.814: W/System.err(16669): at android.os.Looper.loop(Looper.java:135) 
06-09 13:05:54.814: W/System.err(16669): at android.app.ActivityThread.main(ActivityThread.java:5343) 
06-09 13:05:54.814: W/System.err(16669): at java.lang.reflect.Method.invoke(Native Method) 
06-09 13:05:54.814: W/System.err(16669): at java.lang.reflect.Method.invoke(Method.java:372) 
06-09 13:05:54.814: W/System.err(16669): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:905) 
06-09 13:05:54.814: W/System.err(16669): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:700) 

提前请帮助me.Thanks。

+0

获取'Value OnItemClick:'in log? –

+0

ItemClick没有响应。 – Naveen

+0

确定从getView方法中删除'itemView.setOnClickListener',然后检查 –

回答

2

如日志:

IOException: setDataSource failed. 

因为gshsh_07-06-2016_12_11_17.mp3不是MediaPlayer有效的文件路径。

使用完整路径,包括文件当前可用的目录名称。像:

File directory = Environment.getExternalStorageDirectory(); 
file = new File(directory + "/Plugleads/"+ value); 
FileInputStream fileInputStream = new FileInputStream(file); 
mMediaPlayer.setDataSource(fileInputStream.getFD()); 
+0

谢谢。它帮助我... – Naveen

+0

嘿如何显示seekbar并停止点击listitem时的选项?请尽快帮我。提前感谢... – Naveen