2012-02-14 10 views
0

私はアンドロイドコーディングには新しく、ListViewでプロジェクトを作成していました。私はリストビューのテキストファイルに情報を表示するプログラムを書いた。今、私はListActivityを拡張している私のメインファイルを持っています。メインファイルは別のクラスを呼び出していますリストビューでクラス内のメソッドを呼び出す

fileop.ReadFileAsList("Installed_packages.txt");

テキストファイルの各行を読み込みます。私が望むのは、FileOperationsというクラスでこのメソッドを作成し、今行っていることを正確に行うことですが、私の他のプロジェクトのメインクラスはアクティビティを拡張し、ListactivityとActivityを "呼び出し"する方法はわかりません。私はこれがJavaで正当な理由でおそらくできるとは思わない。誰かが私にどのようにリファクタリングするべきかを教えてもらえますか?メインファイルの後に次のコードが続く:

ボトムラインこれをfileopでメソッドにし、メインプロジェクトがListActivityではなくActivityを拡張する新しいプロジェクトにfileopを移動しようとしています。

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; 

} 
} 

EDIT:

私の新しいメインファイル(私が行きたい):

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は私も 'のpublic static String []型ReadFileAsListのように、この方法になるだろう、パッケージ名を変更し、それを使用して、新しいプロジェクトにファイルをそのコピー問題ではありません。 (...) 'それはヘルパーメソッドのようです。必要なクラスからFileOperations.ReadFileAsList(....)のように呼び出すことができます。 –

+0

私のメインファイル(HelloListViewActivity.java)はListActivityを拡張し、次のエラーが発生するためListActivityを拡張する必要があります: 'setListAdapterとgetListView()は定義されていません。 私の "メイン"ファイル(Main.java)は、FileOperations.ReadFileasList( "Installed_pa​​ckages.txt")を呼び出すだけです。今のように実行してください。 – PeterL

答えて

1

あなたがonCreate()ReadFileAsList()メソッドを呼び出しています。 これは許可されていません。次へ 変更:

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_pa​​ckages.txt")を使用します。そこに –

+0

ああ私が間違ってコピーしていた申し訳ありません。 listViewはどこに設定しますか?明らかに、あなたは新しいプロジェクトにそのファイルをコピーすると言ったので、 'Code' – PeterL

関連する問題