레이블이 java인 게시물을 표시합니다. 모든 게시물 표시
레이블이 java인 게시물을 표시합니다. 모든 게시물 표시

2011년 9월 26일 월요일

extends / implements

extends 와 implements 의 차이

extends는 다른 class를 상속하여 부모 class의 모든 기능을 사용할 수 있으며

변수를 추가하거나 함수를 추가, 또는 Overriding을 할 수 있다.

말 그대로 "확장"의 개념


implements는 interface를 상속,

껍데기뿐인 interface의 함수를 모두 구현해야 한다.

비슷한 형태를 가진 class를 여러개 구현할 때 사용한다.

일종의 "틀". 겉모습은 같지만 안에는 각자 다른 것으로 채울 수 있다.

2010년 11월 29일 월요일

httpclient를 이용한 webpage 긁어오기

public void TestHttpClient ()
{
private StringBuilder sb;
HttpClient httpclient = new DefaultHttpClient();
localContext = new BasicHttpContext();
// Set HttpPost
HttpPost httppost = new HttpPost(LOGIN);

// Set Post Param
List<NameValuePair> paramList = new ArrayList<NameValuePair>();
paramList.add(new BasicNameValuePair("user_id", ID));
paramList.add(new BasicNameValuePair("password", PW));
httppost.setEntity(new UrlEncodedFormEntity(paramList));
     
// execute Post \ return Response
HttpResponse response = httpclient.execute(httppost, localContext);
// 200 OK ?
if(HttpStatus.SC_OK == response.getStatusLine().getStatusCode())
{
// Set HttpGet

httppost = new HttpPost(BOARD);

paramList = new ArrayList<NameValuePair>();

paramList.add(new BasicNameValuePair("id", BoardID));

paramList.add(new BasicNameValuePair("page", String.valueOf(PageNum)));

if(SearchKey != null)

       {
        if(SN)
            paramList.add(new BasicNameValuePair("sn", "on"));
           else
              paramList.add(new BasicNameValuePair("sn", "off"));
           if(SS)
              paramList.add(new BasicNameValuePair("ss", "on"));
           else
              paramList.add(new BasicNameValuePair("ss", "off"));
           if(SC)
              paramList.add(new BasicNameValuePair("sc", "on"));
           else
            paramList.add(new BasicNameValuePair("sc", "off"));

           String temp = URLEncoder.encode(SearchKey, "euc-kr");
           paramList.add(new BasicNameValuePair("keyword", temp));
}

       httppost.setEntity(new UrlEncodedFormEntity(paramList));
    // execute Get \ return Response
    response = httpclient.execute(httppost, localContext);
   
    // 200 OK?
       if(HttpStatus.SC_OK == response.getStatusLine().getStatusCode())
{

  // Get Context
           InputStream instream = response.getEntity().getContent();
           BufferedReader reader
= new BufferedReader(new InputStreamReader(instream, "euc-kr"));

           String line = null;
           while(null != (line = reader.readLine()))
            {
  sb.append(line);
               sb.append('\n');
           }

            System.out.println(sb);
  }
  }
}


실제 웹페이지 뷰어를 제작할 때 사용한 코드입니다.

paramList.add를 사용, 실제 url에 포함되는 값들을

넣어주면 해당되는 값을 가져오게 됩니다.

또한 한 번 로그인을 하면 localContext 객체 안에 쿠키 정보가 저장되므로

더이상 로그인을 하지 않아도 상관없습니다. (단 사이트마다 다를 수 있음)

자세한 것은 http://hc.apache.org/ 참조. 위 소스코드는 httpclient 3.x 기반

onListItemClick 과 setOnClickListener

onListItemClick - ListActivity에서 사용되는 함수. ListView의 하나의 List를 Click했을 시 반응

setOnClickListener - View Listener. 하나의 View를 클릭했을 시 반응


만약 커스텀 ListView를 생성했을 시,

열 전체 Click에 관한 동작은 onListItemClick 함수에,

열 내부의 View 하나하나에 대한 ClicksetOnClickListener 함수에 구현.