0

Android の ListView で ArrayList を表示する際に問題に直面しています。ListView で配列リストを読み込もうとすると、null ポインター例外が発生します。実際、私はAndroidのリストビューでメモリカードの内容を読み込もうとしています.(特定のフォルダの内容を表示しています).私はAndroidの開発に慣れていないので、助けてください.

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) {
        // TODO Auto-generated method stub
        if(mExternalMediaAvailable){
            Toast.makeText(getApplicationContext(), "External Media..", Toast.LENGTH_LONG).show();

            //getDir(Environment.getExternalStorageDirectory().toString());
            //Intent i = new Intent(Intent.ACTION_VIEW);
        String SD_Card_Path=Environment.getExternalStorageDirectory().toString();

            //String SD_Card="/sdcard/reports";
            File file = new File(SD_Card_Path);
            File[] file_Array=file.listFiles();

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

            lv=(ListView)findViewById(R.id.list_view);

            for(int i=0;i< file_Array.length;i++){
                 file=file_Array[i];
                 if(file.isDirectory()){
                     Log.d("Directory","Added...");
                     item.add(file.getName()+"/");
                 }
                 else{
                     Log.d("File","Added...");
                     item.add(file.getName());
                 }
            }
            Log.d("adapter", "Before...");
            ArrayAdapter<String> adapter=new ArrayAdapter<String>(Access_MemCardActivity_main.this,android.R.layout.simple_list_item_1,item);
            lv.setAdapter(adapter);
            Log.d("set_adapter", "After...");
            Toast.makeText(getApplicationContext(), adapter.toString(),Toast.LENGTH_LONG).show();
        }
        else{
            Toast.makeText(getApplicationContext(), "You Dont Have External Media..", Toast.LENGTH_LONG).show();
        }
    }
});        
}

}

4

1 に答える 1

1

アダプターListViewに設定する前に、ログにarraylistのサイズを出力して、arraylist に項目が含まれているかどうかを確認してください

于 2012-12-05T11:08:50.577 に答える