2012-02-14 4 views
0

나는 안드로이드 코딩을 처음 사용하고 ListView를 사용하여 프로젝트를 만들었습니다. 필자는 목록보기의 텍스트 파일에 정보를 표시하는 프로그램을 작성했습니다. 지금은 ListActivity를 확장하는 주 파일을 가지고 있으며 모든 것이 작동합니다. 주 파일이 다른 클래스를 호출 중입니다.listview를 사용하여 클래스에서 메서드 호출

fileop.ReadFileAsList("Installed_packages.txt");

텍스트 파일의 각 행을 읽습니다. 필자가 원하는 것은 FileOperations라는 클래스에서이 메서드를 만들고 현재 수행중인 작업을 정확하게 수행하는 것입니다. 그러나 다른 프로젝트의 기본 클래스는 Activity를 확장하고 Listactivity 및 Activity를 "호출하는"방법을 모르겠습니다. 나는 이것이 좋은 이유 때문에 아마 자바에서 할 수 있다고 생각하지 않는다. 누구든지 내가 어떻게 리팩터링해야하는지/보여줘야 하는지를 보여줄 수 있습니까? 아래에있는 코드가 메인 파일 다음에 :

결론 필자는 fileop에서이 방법을 만들고 FileAp를 주 프로젝트가 ListActivity가 아닌 Activity를 확장하는 새 프로젝트로 이동하려고합니다.


MAIN: 

package com.example.hellolistview; 

import android.app.ListActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemClickListener; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 
import android.widget.TextView; 
import android.widget.Toast; 

public class HelloListViewActivity extends ListActivity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, file)); 

     ListView lv = getListView(); 
     lv.setTextFilterEnabled(true); 

     lv.setOnItemClickListener(new OnItemClickListener() { 
      public void onItemClick(AdapterView<?> parent, View view, 
         int position, long id) { 
       // When clicked, show a toast with the TextView text  
       Toast.makeText(getApplicationContext(), ((TextView) view).getText(), 
          Toast.LENGTH_SHORT).show(); 
      } 
     }); 
    } 
    static FileOperations fileop= new FileOperations(); 
    static final String[] file =fileop.ReadFileAsList("Installed_packages.txt"); 
    } 
package com.example.hellolistview; 

import java.io.BufferedReader; 
import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileNotFoundException; 
import java.io.IOException; 
import java.io.InputStreamReader; 

import android.os.Environment; 
import android.util.Log; 

public class FileOperations { 

    public String[] ReadFileAsList(String fileName){   
     try{ 
      File f = new File(Environment.getExternalStorageDirectory() 
       + "/Nullwall/" + fileName); 
      FileInputStream fileIS = new FileInputStream(f); 
      BufferedReader buf = new BufferedReader(new InputStreamReader(
        fileIS)); 
      StringBuilder DbLines = new StringBuilder(); 
      String line = buf.readLine(); 
      while (buf.readLine() != null) 
       { 
       DbLines.append(line); 
       DbLines.append("\r\n"); 
       } 
      String[] ListItems = DbLines.toString().split("\r\n"); 

      return ListItems; 
      } 


catch (FileNotFoundException e) { 

    e.printStackTrace(); 
    Log.e("FileOp_ReadFileAsList","File Not Found in ReadFileAsList()"); 

} 
catch (IOException e) { 
     e.printStackTrace(); 
     Log.e("FileOp_ReadFileAsList","IOException in ReadFileAsList()"); 
    } 
     Log.e("FileOp_ReadFileAsList","Probably an Error in ReadFileAsList()"); 
     return null; 

} 
} 

편집 : 당신이 onCreate() 전에 ReadFileAsList() 방법을 요구하고있다

package com.IPR2.viewlog; 

import java.io.BufferedReader; 
import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileNotFoundException; 
import java.io.IOException; 
import java.io.InputStreamReader; 

import android.app.Activity; 
import android.os.Bundle; 
import android.os.Environment; 
import android.util.Log; 
import android.widget.TextView; 



public class Main extends Activity { 
    private TextView tv; 

    /** Called when the activity is first created. */ 


    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     FileOperations fileOperations = new FileOperations(); 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     tv = (TextView) findViewById(R.id.TextView01); 
     //fileOperations.ClearFile("Installed_packages.txt"); 
     ApplicationOperations.ListAllInstalledApplications(getApplicationContext()); 
     ReadFileAsList("Installed_packages.txt"); <--What Im trying to be able to do. It wont let me 

    } 
    public String[] ReadFileAsList(String fileName){ 

} 
+0

당신이 단지 FileOperations.java가 나는 또한'공공 정적 문자열 [] ReadFileAsList 같은이 방법을 만들 것 패키지 이름을 변경하고이를 사용하여 새 파일을 프로젝트에 있음을 복사 중요하지 않습니다 (...) '도우미 방법처럼. 필수 클래스에서 FileOperations.ReadFileAsList (....)와 같이 호출하십시오. –

+0

내 주 파일 (HelloListViewActivity.java)은 ListActivity를 확장하므로 다음 오류가 발생하므로 ListActivity를 확장해야합니다. 'setListAdapter 및 getListView()가 정의되지 않았습니다. 어떻게 정의합니까? "Main"파일 (Main.java)에서 FileOperations.ReadFileasList ("Installed_packages.txt")를 호출하면됩니다. 지금처럼 실행하십시오. – PeterL

답변

1

:

나의 새로운 홈페이지 파일 (내가 가고 싶은 곳). 허용되지 않습니다. 다음 변화 :

public class HelloListViewActivity extends ListActivity { 
    /** Called when the activity is first created. */ 

    static FileOperations fileop=null; 
    static final String[] file=null; 


    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     this.fileop = new FileOperations(); 
     this.file = fileop.ReadFileAsList("Installed_packages.txt"); 

    setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, this.file)); 

     ListView lv = getListView(); 
     lv.setTextFilterEnabled(true); 

     lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      public void onItemClick(AdapterView<?> parent, View view, 
         int position, long id) { 
       // When clicked, show a toast with the TextView text 
       Toast.makeText(getApplicationContext(), ((TextView) view).getText(), 
         Toast.LENGTH_SHORT).show(); 
      } 
     }); 
    } 

    } 
+0

필자는 새 메인 파일을 추가했으며 위에서 수행 할 수 있기를 바랍니다. 이 일이 내가하는 일을 이해하는 데 도움이됩니까? – PeterL

+0

LOL. 당신은 FileOperations을 가지고 있습니다. fileOperations = new FileOperations(); fileOperations.ReadFileAsList ("Installed_packages.txt")를 사용하십시오. 거기에 –

+0

Ahh 미안하다 내가 잘못 복사하고 있었다. 어디에서 listView를 설정합니까? 분명히 그것은 당신이 새로운 프로젝트에 그 파일을 복사한다고 말한대로 'Code' – PeterL

관련 문제