我有以下代码作为最终结果,给出了Android设备中大于500 KB的图像列表:
package com.click;
import java.io.File;
import java.util.ArrayList;
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.os.Environment;
import android.widget.LinearLayout;
import android.widget.TextView;
public class SkanerActivity extends Activity {
private File root;
private ArrayList<File> fileList = new ArrayList<File>();
private LinearLayout view;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_skaner);
//TEST
view = (LinearLayout) findViewById(R.id.view);
//getting SDcard root path
root = new File(Environment.getExternalStorageDirectory()
.getAbsolutePath());
getfile(root);
for (int i = 0; i < fileList.size(); i++) {
TextView textView = new TextView(this);
textView.setText(fileList.get(i).getName());
textView.setPadding(5, 5, 5, 5);
System.out.println(fileList.get(i).getName());
if (fileList.get(i).isDirectory()) {
textView.setTextColor(Color.parseColor("#FF0000"));
}
view.addView(textView);
}
}
public ArrayList<File> getfile(File dir) {
File listFile[] = dir.listFiles();
if (listFile != null && listFile.length > 0) {
for (int i = 0; i < listFile.length; i++) {
if (listFile[i].isDirectory()) {
// Zakomentowane aby nie dodawac do listy folderów
// fileList.add(listFile[i]);
getfile(listFile[i]);
} else if (listFile[i].length() >= 500 * 1024) {
if (listFile[i].getName().endsWith(".png")
|| listFile[i].getName().endsWith(".jpg")
|| listFile[i].getName().endsWith(".jpeg")
|| listFile[i].getName().endsWith(".gif"))
{
fileList.add(listFile[i]);
}
}
}
}
return fileList;
}
}
现在我想创建一个新类来进一步处理这个图像列表中的新操作 - 在新类中。
我的问题是:如何处理和声明fileList作为在其他类(新Java类)中使用的变量(Object)?我知道,在Java中没有像#34;全局变量&#34;这样的方法,但可以肯定的是有任何方法在应用程序中的其他地方(Class)使用脚本结果。
你能帮我解决一下我的问题吗?非常感谢您的帮助!
答案 0 :(得分:0)
如果新课程是指新的活动,那么您可以使用
传递数据Intent intent = new Intent(getBaseContext(), NewClass.class);
intent.putExtra("imageList", fileList);
startActivity(intent);
但在此之前,您需要在当前班级中引用此列表
fileList = getfile(root);
但是,如果你只是意味着需要一个新的类进行处理。只需创建一个新类。定义一个带ArrayList<File>
参数的构造函数/方法。从当前类创建一个新类的对象,将文件列表作为参数传递,并调用其中的方法以获得进一步的处理逻辑。
class ImagesProcessorClass {
List<File> imageList;
public ImagesProcessorClass (List<file> imageList) {
this.imageList = imageList;
}
public void processsImages(){
//do processing on imageList
}
}
在你现在的课堂上做
public class SkanerActivity extends Activity {{
//your present code
protected void onCreate(Bundle savedInstanceState) {
//your present code
fileList = getfile(root);
ImagesProcessorClass imageProcessor = new ImagesProcessorClass (fileList);
imageProcessor.processsImages();
}
}
答案 1 :(得分:0)
使fileList成为该类的私有成员。然后添加访问器方法以从类外部访问它。您当然需要创建一个SkanerActivity对象来实现这一目标。
class SkanerActivity{
...
private ArrayList<File> fileList = new ArrayList<File>();
public getFileList(){
return fileList;
}
...
}
Class Access{
void function1(){
SkanerActivity obj = new SkanerActivity();
List fileList = obj.getFileList();
..
}
答案 2 :(得分:0)
如果你想在另一个活动中使用它,你可以使用类似的东西
Intent intent = new Intent(this, AnotherActivity.class);
intent.putExtra("List", fileList);
startActivity(intent);
而在AnotherActivity中必须这样做
Intent data = getIntent();
List<File> files = (List<File>)data.getSerializableExtra("List");
此外,您可以将此列表设为静态并创建方法来获取它;