로그 내용을 보니까 대충 NullPointerException이 발생하더군요

다른분들 예제랑 강의 참조해서 작성한건데 이상하네요 ㅜ.ㅜ

대략적인 프로그램 로직은

1. 에디트박스가 빈칸 >> 검색클릭 >> 디비로부터 모든정보를 받아와서 ArrayList에 추가후 ListView로 읽어온 정보들 출력

2. 에디트박스가 빈칸이 아니라면 >>검색클릭 >>디비로부터 해당정보만 받아와서 ArrayList에 추가후 ListView로 읽어온 정보들 출력

입니다.

도대체 어디가 문제일까요? ㅜ.ㅜ

package com.Nutrition;

 

import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.ArrayList;

import android.app.Activity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;

import com.Forgo3.R;

public class Search extends Activity {

 private static final String DATABASE_NAME = "Forgo3.sqlite";
 private static final String SEARCH = "SELECT * FROM calorie WHERE food LIKE ?";
 private static final String SEARCHEMPTY = "SELECT * FROM calorie";


 
 private EditText et;
 private SQLiteDatabase db;
 private Cursor c;
 private String result1 = "";
 private String input[] = new String[1];
 private ArrayList<String> al ;
 private ArrayAdapter<String> ad;
 private ListView lv;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  // TODO Auto-generated method stub
  super.onCreate(savedInstanceState);
  setContentView(R.layout.search);


  search();

  exit();
 }

 public void exit(){
  Button b = (Button)findViewById(R.id.searchback);
  b.setOnClickListener(new View.OnClickListener() {

   @Override
   public void onClick(View v) {
    // TODO Auto-generated method stub
    finish();
   }
  });
 }

 public void search(){
  Button b = (Button)findViewById(R.id.searchfood);
  b.setOnClickListener(new View.OnClickListener() {
   
   @Override
   public void onClick(View v) {
    // TODO Auto-generated method stub


    
    et = (EditText)findViewById(R.id.foodinput);

    
    result1 ="";


    db = openOrCreateDatabase(DATABASE_NAME,   SQLiteDatabase.CREATE_IF_NECESSARY, null);
    input[0] =  "%"+et.getText().toString()+"%";

    if(et.getText().toString().equals("")){
     al = new ArrayList<String>();
//     al.clear();
     c = db.rawQuery(SEARCHEMPTY, null);
     if ( c != null )
     {
      if ( c.moveToFirst() )
      {
       for(int i =0; i < c.getColumnCount(); i++){
        result1 = c.getColumnName(i)+ "|";
        al.add(result1);
       }
       
       

       do{
        result1 = "";
        for(int i = 0 ; i < c.getColumnCount() ; i++ )
        {
         result1 = c.getString(i) + " | ";
         al.add(result1);
        }
        
        
       }while(c.moveToNext());

      }
      
     }
     c.close();
    }
    else
    {
     c = db.rawQuery(SEARCH, input);
     al = new ArrayList<String>();
//     al.clear();
     if ( c != null )
     {
      if ( c.moveToFirst() )
      {
       for(int i =0; i < c.getColumnCount(); i++){
        result1 = c.getColumnName(i)+ "|";
        al.add(result1);
       }
       
       

       do{
        result1 = "";
        for(int i = 0 ; i < c.getColumnCount() ; i++ )
        {
         result1 = c.getString(i) + " | ";
         al.add(result1);
        }
        
        
       }while(c.moveToNext());

      }
     }
     c.close();
    }
   }
  });
  setArray();
 }
  
 public void setArray(){
  ad = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, al);
  ad.notifyDataSetChanged();
  lv = (ListView)findViewById(R.id.searchlist);
  lv.setAdapter(ad);
 }
}