2015-01-02 99 views
0

我製作了一個Android應用程序,您可以在其中通過「ListView」Java將一組文件加載到外部存儲器的文件夾中。這是我的代碼:如何從列表視圖中選擇特定文件

public class MainActivity extends Activity { 

    final StringBuffer sb = new StringBuffer(); 

    private ListView mainListView ; 
    private ArrayAdapter<String> listAdapter ; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     mainListView = (ListView) findViewById(R.id.mainListView); 
     ArrayList<String> List = new ArrayList<String>(); 

     File storage = Environment.getExternalStorageDirectory(); 
     File file = new File(storage,"/myfolder/"); 
     if (file.exists() && file.isDirectory()) { 
      for (String s : file.list()) { 
       sb.append(s + " "); 
       List.addAll(Arrays.asList(s)); 
      } 
     } 

     listAdapter = new ArrayAdapter<String>(this, R.layout.simplerow, R.id.rowTextView,List); 
     mainListView.setAdapter(listAdapter); 
    } 

我加了一個鈕「打開」附近的每加載文件中的「simplerow.xml」:

<Button 
      android:id="@+id/button1" 
      android:layout_width="75dp" 
      android:layout_height="75dp" 
      android:layout_alignParentTop="true" 
      android:layout_alignParentRight="true" 
      android:layout_marginLeft="5dp" 
      android:layout_marginRight="5dp" 
      android:layout_marginTop="5dp" 
      android:text="Open" /> 

     <TextView 
      android:id="@+id/rowTextView" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_toLeftOf="@+id/button1" 
      android:padding="10dp" 
      android:textSize="16sp" > 
     </TextView> 

我添加了這個按鈕,因爲我要打開選定的文件點擊按鈕。 我該怎麼辦?我怎樣才能選擇特定的文件?我如何檢索選定文件的路徑?

+0

您將實現'自定義數組適配器'爲此... –

+0

你可以通過這個鏈接-http://androidexample.com/How_To_Create_A_Custom_Listview_-_Android_Example/index.php?view = article_discription&aid = 67&aaid = 9 –

回答

1

添加點擊監聽器爲您的列表視圖,如:

mainListView .setOnItemClickListener(new OnItemClickListener() { 

    @Override 
    public void onItemClick(AdapterView<?> parent, View view, 
      int position, long id) { 

      File myFile = new File(List.get(position)); 
      FileOpen.openFile(mContext, myFile); 
    } 

}); 

public class FileOpen { 

    public static void openFile(Context context, File url) throws IOException { 
     // Create URI 
     File file=url; 
     Uri uri = Uri.fromFile(file); 

     Intent intent = new Intent(Intent.ACTION_VIEW); 
     // Check what kind of file you are trying to open, by comparing the url with extensions. 
     // When the if condition is matched, plugin sets the correct intent (mime) type, 
     // so Android knew what application to use to open the file 
     if (url.toString().contains(".doc") || url.toString().contains(".docx")) { 
      // Word document 
      intent.setDataAndType(uri, "application/msword"); 
     } else if(url.toString().contains(".pdf")) { 
      // PDF file 
      intent.setDataAndType(uri, "application/pdf"); 
     } else if(url.toString().contains(".ppt") || url.toString().contains(".pptx")) { 
      // Powerpoint file 
      intent.setDataAndType(uri, "application/vnd.ms-powerpoint"); 
     } else if(url.toString().contains(".xls") || url.toString().contains(".xlsx")) { 
      // Excel file 
      intent.setDataAndType(uri, "application/vnd.ms-excel"); 
     } else if(url.toString().contains(".zip") || url.toString().contains(".rar")) { 
      // WAV audio file 
      intent.setDataAndType(uri, "application/x-wav"); 
     } else if(url.toString().contains(".rtf")) { 
      // RTF file 
      intent.setDataAndType(uri, "application/rtf"); 
     } else if(url.toString().contains(".wav") || url.toString().contains(".mp3")) { 
      // WAV audio file 
      intent.setDataAndType(uri, "audio/x-wav"); 
     } else if(url.toString().contains(".gif")) { 
      // GIF file 
      intent.setDataAndType(uri, "image/gif"); 
     } else if(url.toString().contains(".jpg") || url.toString().contains(".jpeg") || url.toString().contains(".png")) { 
      // JPG file 
      intent.setDataAndType(uri, "image/jpeg"); 
     } else if(url.toString().contains(".txt")) { 
      // Text file 
      intent.setDataAndType(uri, "text/plain"); 
     } else if(url.toString().contains(".3gp") || url.toString().contains(".mpg") || url.toString().contains(".mpeg") || url.toString().contains(".mpe") || url.toString().contains(".mp4") || url.toString().contains(".avi")) { 
      // Video files 
      intent.setDataAndType(uri, "video/*"); 
     } else { 
      //if you want you can also define the intent type for any other file 

      //additionally use else clause below, to manage other unknown extensions 
      //in this case, Android will show all applications installed on the device 
      //so you can choose which application to use 
      intent.setDataAndType(uri, "*/*"); 
     } 

     intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     context.startActivity(intent); 
    } 
} 

而且你還必須存儲的文件路徑的地方,讓你輕鬆通過選定的文件路徑onItemClickListener

+0

但是我如何找到所選文件的路徑? – user3582433