вызов метода в классе со списком - PullRequest
0 голосов
/ 14 февраля 2012

Я новичок в кодировании Android и делал проект с ListView.Я написал программу, которая отображает информацию в текстовом файле в виде списка.Прямо сейчас у меня есть основной файл, расширяющий ListActivity, и все работает.Основной файл вызывает другой класс

fileop.ReadFileAsList ("Installed_packages.txt");

, который читает каждую строку текстового файла.Я хочу сделать этот метод в классе с именем FileOperations и делать именно то, что он делает сейчас, но мой основной класс в моем другом проекте расширяет активность, и я не знаю, как «вызвать» расширение расширенной активности и активности.Я не думаю, что это может быть сделано в Java, вероятно, по уважительной причине.Может ли кто-нибудь показать мне, как я бы / должен рефакторинг это?Основной файл с приведенным ниже кодом:

Итог Я пытаюсь сделать этот метод в fileop и переместить fileop в новый проект, где основной расширяет Activity, а не ListActivity.

 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;

}
}

РЕДАКТИРОВАТЬ:

Мой новый основной файл (Куда я хочу пойти):

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){

}

1 Ответ

1 голос
/ 14 февраля 2012

вы вызываете метод ReadFileAsList() до onCreate().это не разрешеноизменить на следующее:

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();
             }
        });
    }

    }
...