0

ボタンクリックイベントで指定されたフォルダの内容(外部メモリカードに存在)を開くことを探しています。それらを別のリストに表示します。リストの内容を読み込んでいるときに、null ポインター例外としてエラーが発生します。私のソースコードは次のとおりです。

public class Access_MemCardActivity_main extends Activity {

Button btn_view;
boolean mExternalMediaAvailable=false;
ArrayList<String> item=new ArrayList<String>();
ArrayAdapter<String> adapter;
private ListView lv;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    String state=Environment.getExternalStorageState();

    if(Environment.MEDIA_MOUNTED.equals(state)){
        mExternalMediaAvailable=true;
    }
    else{
        mExternalMediaAvailable=false;
    }

    btn_view=(Button)findViewById(R.id.btn_view);

    btn_view.setOnClickListener(new OnClickListener() {

    public void onClick(View v) {

        if(mExternalMediaAvailable){
            Toast.makeText(getApplicationContext(), "External Media..", Toast.LENGTH_LONG).show();


            String SD_Card_Path=Environment.getExternalStorageDirectory().toString()+"/reports";


            File file = new File(SD_Card_Path);
            File[] file_Array=file.listFiles();

            Toast.makeText(getApplicationContext(), file_Array.toString(), Toast.LENGTH_LONG).show();

            for(int i=0;i< file_Array.length;i++){
                 file=file_Array[i];
                 if(file.isDirectory()){
                     item.add(file.getName()+"/");
                 }
                 else{
                     item.add(file.getName());
                 }
            }
            Toast.makeText(getApplicationContext(), item.toString(),Toast.LENGTH_LONG).show();



            lv=(ListView)findViewById(R.id.list_view);
            adapter=new ArrayAdapter<String>(Access_MemCardActivity_main.this,R.layout.main,R.id.list_view,item);
            lv.setAdapter(adapter);



        }
        else{
            Toast.makeText(getApplicationContext(), "You Dont Have External Media..", Toast.LENGTH_LONG).show();
        }
    }
4

1 に答える 1

0

これ、

adapter=new ArrayAdapter<String>(Access_MemCardActivity_main.this,R.layout.main,R.id.list_view,item);

私には間違っているように見えます...あなたは渡すことができません。代わりにあなたはレイアウトR.layout.mainを渡す必要があります。row.xml

とにかく以下のスニペットは正常に動作します。

lv = (ListView) findViewById(R.id.list_view);
adapter = new ArrayAdapter < String > (this,
android.R.layout.simple_list_item_1);

for (int i = 0; i < file_Array.length; i++) {
    file = file_Array[i];
    if (file.isDirectory()) {
        adapter.add(file.getName() + "/");

    } else {
        adapter.add(file.getName());
    }
}
lv.setAdapter(adapter);

onClickListenerの下でArrayAdapterを構築している場合は、コンテキストをActivityName.thisとして渡します。

adapter = new ArrayAdapter < String > (ActivityName.this,
    android.R.layout.simple_list_item_1);
于 2012-11-22T06:05:06.980 に答える