表示機能はMain_activityクラスの下にあります。指定したディレクトリの下にあるすべてのファイルを表示します。私は、グリッド内のコンテンツを表示するGridAdapterと呼ばれる別のクラスを持って、今Main_Activityクラスのメソッドをヘルパークラスから呼び出す方法は?
protected void OnCreate(Bundle SavedInstanceState)
{
..//other code
display(path)
}
public void display(String path)
{
try {
File folderX = new File(path);
ActionBar actionBar = getSupportActionBar();
actionBar.setTitle(folderX.getParentFile().getName() + "/" + folderX.getName());
final File[] folderXCHILD = folderX.listFiles();
Arrays.sort(folderXCHILD, new FileComparator());
GridView gridView = (GridView)findViewById(R.id.gridView);
gridAdapter = new GridAdapter(this, folderXCHILD,isShow);
gridView.setAdapter(gridAdapter);
}
catch (Exception e)
{
Toast.makeText(this, "Cannot display the Content.", Toast.LENGTH_SHORT).show();
}
}
から呼び出されます。 GridAdapterクラスはアクティビティ自身ではありません。
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final Holder holder = new Holder();
View rowView;
if (convertView == null) {
rowView = inflater.inflate(R.layout.gridout, parent, false);
} else {
rowView = convertView;
}
holder.tv = (TextView) rowView.findViewById(R.id.textView1);
holder.img = (ImageView) rowView.findViewById(R.id.imageView1);
holder.chk = (CheckBox) rowView.findViewById(R.id.checkBox);
if (isShow) {
holder.chk.setVisibility(View.VISIBLE);
} else {
holder.chk.setVisibility(View.GONE);
}
final File f = data[position];
if (f.isDirectory())
{
holder.img.setImageResource(R.mipmap.folderpic);
holder.tv.setText(f.getName());
holder.chk.setChecked(checkBoxState[position]);
}
else
{
ImageLoader.getInstance().displayImage("file://" + f.getPath(), holder.img);
holder.tv.setBackgroundResource(R.color.colorSecond);
holder.tv.setText("");
holder.chk.setChecked(checkBoxState[position]);
}
rowView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(f.isDirectory())
{
// I want to call the display(f.getPath()) method of MainActivity.
}
});
return rowView;
}
問題は、GridAdapter内のonClick()メソッドからdisplay()メソッドを呼び出したいということです。私はどのように進めますか?
アダプタクラスでインスタンスを作成し、アダプタクラスから任意のメソッドを呼び出すことができます。あなたはそれを試しましたか? –
私はそれを考えていましたが、内容を表示するためだけにMain_activityのインスタンスを作成することは過度なことではありませんか?私がdisplay()メソッドを10回呼び出したとすると、Main_activityのインスタンスが10個作成され、アプリが重すぎることは確実です。また、Main_activityには、アプリの起動中に一度だけ必要なパラメータが含まれています。だから、私は、インスタンスを作ることは、何度も何度も不要なことを繰り返すと思います。 –
10個のインスタンスを作成する必要はなく、1個だけ作成して何度も再利用できます。 –