在简单 class 中,无法打开资产文件夹中的文件以加载到 Android 应用程序中的数组
In simple class, not able to open file in Assets folder to load to array in Android app
我想从我的简单java class "MyContent"中读取,并且有一个没有参数的静态方法,因为一旦你调用里面的变量,它就会做静态方法中的代码。我正在尝试通过读取 Assets 文件夹中的文件并将代码添加到其中,以便数据适配器读取它。
我的内容class:
public class MyContent extends Application {
public static final List<Element> ITEMS = new ArrayList<Element>();
private static Random random = new Random(System.currentTimeMillis());
public static final Map<String, Element> ITEM_MAP = new HashMap<String, Element>();
AssetManager assetManager = getAssets();
static {
try {
InputStream inputStream = getAssets().open("data.csv");
InputStreamReader inputStreamReader=new InputStreamReader((inputStream));
BufferedReader bufferedReader=new BufferedReader((inputStreamReader));
String tt="";
while ((tt=bufferedReader.readLine())!=null){
MyContent.addItemElement(MyContent.createElement(tt));
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
问题是 AssetManager assetManager = getAssets();不能是静态的,但是 InputStream inputStream = getAssets().open("data.csv");我需要将它们放入静态方法中,谁能告诉我如何处理这个问题?
getAssets()
需要应用程序 context
预先初始化才能] 调用它。下面的代码流程应该可以实现你的 objective:
public class MyContent extends Application {
public static final Map<String, Element> ITEM_MAP;
@Override
public void onCreate() {
super.onCreate();
ITEM_MAP = new HashMap<String, Element>();
AssetManager assetManager = getAssets();
try {
InputStream inputStream = getAssets().open("data.csv");
InputStreamReader inputStreamReader=new InputStreamReader((inputStream));
BufferedReader bufferedReader=new BufferedReader((inputStreamReader));
String tt="";
while ((tt=bufferedReader.readLine())!=null){
MyContent.addItemElement(MyContent.createElement(tt));
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
编辑 1
在您的 AndroidManifest.xml
中,记得将您的应用程序 class 添加到标签 application
下,例如
<application
android:name=". MyContent"
...
</application>
我想从我的简单java class "MyContent"中读取,并且有一个没有参数的静态方法,因为一旦你调用里面的变量,它就会做静态方法中的代码。我正在尝试通过读取 Assets 文件夹中的文件并将代码添加到其中,以便数据适配器读取它。
我的内容class:
public class MyContent extends Application {
public static final List<Element> ITEMS = new ArrayList<Element>();
private static Random random = new Random(System.currentTimeMillis());
public static final Map<String, Element> ITEM_MAP = new HashMap<String, Element>();
AssetManager assetManager = getAssets();
static {
try {
InputStream inputStream = getAssets().open("data.csv");
InputStreamReader inputStreamReader=new InputStreamReader((inputStream));
BufferedReader bufferedReader=new BufferedReader((inputStreamReader));
String tt="";
while ((tt=bufferedReader.readLine())!=null){
MyContent.addItemElement(MyContent.createElement(tt));
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
问题是 AssetManager assetManager = getAssets();不能是静态的,但是 InputStream inputStream = getAssets().open("data.csv");我需要将它们放入静态方法中,谁能告诉我如何处理这个问题?
getAssets()
需要应用程序 context
预先初始化才能] 调用它。下面的代码流程应该可以实现你的 objective:
public class MyContent extends Application {
public static final Map<String, Element> ITEM_MAP;
@Override
public void onCreate() {
super.onCreate();
ITEM_MAP = new HashMap<String, Element>();
AssetManager assetManager = getAssets();
try {
InputStream inputStream = getAssets().open("data.csv");
InputStreamReader inputStreamReader=new InputStreamReader((inputStream));
BufferedReader bufferedReader=new BufferedReader((inputStreamReader));
String tt="";
while ((tt=bufferedReader.readLine())!=null){
MyContent.addItemElement(MyContent.createElement(tt));
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
编辑 1
在您的 AndroidManifest.xml
中,记得将您的应用程序 class 添加到标签 application
下,例如
<application
android:name=". MyContent"
...
</application>