2015-05-28 18 views
1

我正在研究一個簡單的文字處理應用程序,並且我接近於能夠釋放它的點,除了我有一個問題。當我點擊ListView中顯示用戶使用我的應用程序創建的所有文本文件的文件名的項目時,我想打開與項目名稱對應的文件,並將該文件中的文本放入主要是用戶用來輸入數據的EditText。但是,當點擊該項目時,沒有任何反應。這是我的代碼。在Android中的ListView中打開文本文件

filesListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 



       @Override 
       public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
        String itemName = filesListView.getItemAtPosition(position).toString(); 
        FileInputStream fis; 
        String content = null; 

        try { 
         fis = openFileInput(itemName); 
         byte[] input = new byte[fis.available()]; 

         while (fis.read(input) != -1) { 
          content += new String(input); 

         } 
        } catch (FileNotFoundException e) { 
         e.printStackTrace(); 
        } catch (IOException e) { 
         e.printStackTrace(); 
        } 

        textEntryEditText = (EditText) findViewById(R.id.textEntryEditText); 
        textEntryEditText.setText(content); 
       } 
      }); 

請大家幫忙。謝謝!

編輯:已解決,檢查我的答案,看看我做了什麼。

回答

0

listview items的focusable可能有問題。將ListView中editText的focusable設置爲false。

+0

嘗試添加Toast消息以查看點擊功能是否按預期工作 –

0

嘗試從Listview適配器中獲取文件或路徑對象而不是文件名。 當使用openFileInput(String)方法時,它創建或從應用程序文件文件夾中獲取文件,而不是從該文件位置獲取文件。所以使用BaseAdapter和利用的getItem(int)方法

+0

就像File file =(File)listview.getAdapter()。getItem(position); – ravi

0

獲得File對象相信你使用任何一個dapter的數據綁定到你的ListView, 所以在自定義適配器類

if(convertView==null){ 
      convertView.setTag(holder); 
      convertView.setTag(R.string.fileName, array.get(position).getfileName()); 
}else { 

      holder = (ViewHolder) convertView.getTag(); 
      } 

然後在項目點擊試試取得這樣的文件名

fileName = view.getTag(R.string.fileName).toString(); 
0

沒關係,我解決了它。經過幾個小時的眼淚,憤怒和挫折,我終於解決了它,哈哈。但是,謝謝大家的迴應。至於其他有類似問題的人,這就是我所做的。

 public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
        String itemName = filesListView.getItemAtPosition(position).toString(); 
        StringBuffer fileRead = new StringBuffer(""); 

         try { 
          FileInputStream fileInputStream = new FileInputStream(new File(getDir("FOLDER", Context.MODE_APPEND), itemName)); 
          InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream); 
          BufferedReader bufferedReader = new BufferedReader(inputStreamReader); 

          String readString = bufferedReader.readLine(); 

          while (readString != null) { 
           fileRead.append(readString); 
           readString = bufferedReader.readLine(); 
          } 
          fileInputStream.close(); 
          inputStreamReader.close(); 
          bufferedReader.close(); 
          textEntryEditText.setText(fileRead); 
         } catch (FileNotFoundException e) { 
          e.printStackTrace(); 
         } catch (IOException e) { 
          e.printStackTrace(); 
         } 

       } 


      }); 

我使用openFileInput的以前的方法是有缺陷的,因爲我試圖找到openFileInput看起來,這是不是在我的文件是默認的目錄內的文件。之後,我試着直接引用它,發現openFileInput不允許這樣做。因此,我最終嘗試製作一個新的FileInputStream,並告訴它創建一個新的File對象,該對象使用getDir方法引用FOLDER目錄以及由itemName確定的文件名稱。希望這能幫助其他像我一樣掙扎的人,這樣他們就不會像我一樣受苦。再次感謝那些迴應,即使我沒有使用你的建議!