私はアンドロイドコーディングには新しく、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){
}
あなただけFileOperations.javaは私も 'のpublic static String []型ReadFileAsListのように、この方法になるだろう、パッケージ名を変更し、それを使用して、新しいプロジェクトにファイルをそのコピー問題ではありません。 (...) 'それはヘルパーメソッドのようです。必要なクラスからFileOperations.ReadFileAsList(....)のように呼び出すことができます。 –
私のメインファイル(HelloListViewActivity.java)はListActivityを拡張し、次のエラーが発生するためListActivityを拡張する必要があります: 'setListAdapterとgetListView()は定義されていません。 私の "メイン"ファイル(Main.java)は、FileOperations.ReadFileasList( "Installed_packages.txt")を呼び出すだけです。今のように実行してください。 – PeterL