안녕하세요.
	커스텀 리스트뷰와 내부 DB(sqlite)를 이용하여 대화내용을 출력해주는
	레이아웃을 구현하고 있습니다.
	대화내용layout/시간타이틀layout 이 두개를 커스텀 리스트뷰에 출력하고 있는데요, 
	대화내용을 추가할 때마다 DB에도 추가가 됩니다. [대화메세지/시간 등]
	대화내용을 롱 클릭해서 DB내에서 조회해서 삭제 한 후,  다시 갱신해서 보여주려고 하는데
	pk값으로 조회해서 삭제하려고 합니다. 
	뷰홀더로 해당 대화내용의 pk값을 저장했다가. 롱클릭했을 때 해당 메세지의 pk값을 확인 후,
	sql로 삭제하려고 하는데, 롱클릭 부분의 toast...즉, holder.date_tv.getTag().toString() 이 부분에서 에러가 
	발생합니다. 현재는 pk값이 아닌 날짜값만 조회하려고 하는데 널포인트익셉션이 발생합니다.;
	어느 부분에서 값이 저장이 안된건지 모르겠습니다. ㅠ
	 
	onCreate에서 db데이터를 조회해서 순서대로 출력합니다.
	(getview에서 대화형식[0]인지, 타이틀[1]인지 구별해서 각각 다른 레이아웃 형식으로 출력)
	 
public View getView(int position, View convertView, ViewGroup parent) 
		{
			
			//View view = null;
			final ViewHolderItem holder;
			//요청하는 항목에 해당하는 데이터 객체를 얻는다.
			ExamData data = m_data_list.get(position);
			// 해당 항목의 뷰 타입을 얻는다.
			int type = getItemViewType(position);
			//final ExamData data =null;
//			/ExamData data;
			// convertView 뷰는 어댑터가 현재 가지고 있는 해당 항목의 뷰객체이다.
			// null 이 넘어오는 경우에만 새로 생성하고, 그렇지않은 경우에는 그대로 사용한다.
			if (convertView == null) 
			{
				Log.d("convertView is null","convertView is null");
				holder = new ViewHolderItem();
				//view = m_inflater.inflate(R.layout.list_item1, null);
				switch (type) 
				{
					case 0://대화형식
						convertView = m_inflater.inflate(R.layout.list_item1, null);
						if (data != null) 
						{
						
							holder.user_tv = (TextView) convertView.findViewById(R.id.user_view1);
							holder.msg_tv = (TextView) convertView.findViewById(R.id.message_view1);
							holder.date_tv = (TextView) convertView.findViewById(R.id.date_view1);
							
							// 이름, 메세지, 시간정보를 텍스트뷰에 설정한다.
							holder.user_tv.setText(data.data0); //이름
							holder.msg_tv.setText(data.data1); //메세지
							holder.date_tv.setText(data.data2); //시간정보
							
							convertView.setTag(holder);
						}
					break;
					
					case 1://시간타이틀
						convertView = m_inflater.inflate(R.layout.list_item3, null);
						if(data!=null)
						{
							((TextView) convertView).setText(data.data0);
						}
					break;
				}
			} 
			else //convertview is not null
			{
				holder = (ViewHolderItem)convertView.getTag();
				
			}
	
			//삭제
			m_list.setOnItemLongClickListener(new OnItemLongClickListener() 
			{
				@Override
				public boolean onItemLongClick(AdapterView<?> parent, View view,
						int position, long id) 
				{
					Toast.makeText(getApplicationContext(),holder.date_tv.getTag().toString(), 1000).show();
					//delete_dialog(position);
					return true;
					//data에 pk값도 추가해서 클릭으로 선택시, pk값을 얻어온 후 그 값으로 delete..
				}
				
			});
			
				
				
				
			//not null
			return convertView;
		}
	}
	
	  public static class ViewHolderItem
	  {
	    TextView user_tv=null;
		TextView msg_tv=null;
	    TextView date_tv=null;
	  }
	 
	Examdata 부분입니다.
public static class ExamData 
	{
		public int type = 0; // 레이어종류를 구분할 변수.
		public String data0; 
		public String data1;
		public String data2;
		// byte parm_type,
		public ExamData(int parm_type, String parm_data0, String parm_data1,
				String parm_data2) {
			type = parm_type;
			data0 = parm_data0; // name
			data1 = parm_data1; // msg
			data2 = parm_data2; // time
		}
	}