웹페이지 읽어오기 : http://son10001.blogspot.kr/2016/05/android-studio_30.html
요 상태에서...
커스텀 뷰 레이아웃을 하나 만들자.
레이아웃 항목에서 "Layout resource File" 메뉴를 선택해 파일을 만든다.
(물론 이건 조금이라도 타이핑 할 내용을 줄이기 위해서 하는거라서, 그냥 직접 XML 레이아웃을 다 쳐 넣어도 된다.)
만들 레이아웃 파일명을 넣고 확인.
그럼 이렇게 레이아웃 파일이 생성된다.
커스텀 레이아웃에 쓸 아이콘 이미지를 몇개 추가 한다.
아이콘 이미지 :




완성된 레이아웃은 대충 이런 형태.
메인 타이틀, 서브 텍스트, 아이콘 이미지. 이렇게 3개의 항목이 하나의 셋인 리스트 뷰다.
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:layout_width="50dip" android:layout_height="50dip" android:id="@+id/imageView" android:src="@drawable/num01" android:layout_margin="5dip" /> <LinearLayout android:orientation="vertical" android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Title Text" android:id="@+id/textView" android:textSize="24dip" android:layout_marginLeft="5dip" android:layout_marginTop="5dip" android:layout_marginRight="5dip" android:layout_marginBottom="1dip" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Sub Text" android:id="@+id/textView2" android:textSize="16dip" android:layout_marginLeft="5dip" android:layout_marginTop="1dip" android:layout_marginRight="5dip" android:layout_marginBottom="5dip" /> </LinearLayout> </LinearLayout>
3개의 항목이 하나의 아이템으로 동작 할 것이므로, 클래스를 만들어 묶어 준다.
클래스를 추가하고.
이름을 적당하게 지정한다.
데이터 셋을 관리할 클래스이므로 이렇게 Getter / Setter 를 구현 해줌.
package com.son10001.formbasic;
public class ListItem {
int image;
String title;
String sub;
public ListItem ( int inImage, String inTitle, String inSub){
this.image = inImage;
this.title = inTitle;
this.sub = inSub;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getSub() {
return sub;
}
public void setSub(String sub) {
this.sub = sub;
}
public int getImage() {
return image;
}
public void setImage(int image) {
this.image = image;
}
}
그 다음에는
어뎁터를 구현해 준다.
참고 : http://son10001.blogspot.kr/2016/05/android-studio-listview.html
이전에 만들었던 리스트 뷰와 같은 방식으로 만들면 되는데, 단지 getView 가 좀더 복잡하고 addItem 이 데이터 셋을 넘겨서 여러 아이템을 한꺼번에 적용하는게 다르다.
이렇게 어뎁터 까지 구현해 줬으면...
이젠 메인 액티비티에서 써 먹으면 된다.
package com.son10001.formbasic;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.ListView;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.ProtocolException;
import java.net.URL;
import java.util.ArrayList;
public class BasicActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_basic);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
});
ListView listView = (ListView) findViewById(R.id.listView);
MyAdapter adapter = new MyAdapter(this);
listView.setAdapter(adapter);
ArrayList<ListItem> items = new ArrayList<ListItem>();
items.add(new ListItem(R.drawable.num01, "Title 01", "Sub 01"));
items.add(new ListItem(R.drawable.num02, "Title 02", "Sub 02"));
items.add(new ListItem(R.drawable.num03, "Title 03", "Sub 03"));
items.add(new ListItem(R.drawable.num04, "Title 04", "Sub 04"));
adapter.addItem(items);
// 클릭이벤트
findViewById(R.id.btnGetWeb).setOnClickListener(mClickListener);
}
Button.OnClickListener mClickListener = new View.OnClickListener() {
public void onClick(View v) {
try {
new HttpUtil().execute();
} catch (Exception e) {
e.printStackTrace();
}
}
};
private URL Url;
private String strUrl,strCookie,result;
public class HttpUtil extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute() {
super.onPreExecute();
strUrl = "http://192.168.0.181:916/gettest.aspx";
}
@Override
protected Void doInBackground(Void... voids) {
try{
Url = new URL(strUrl);
HttpURLConnection conn = (HttpURLConnection) Url.openConnection();
conn.setRequestMethod("GET");
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setUseCaches(false);
conn.setDefaultUseCaches(false);
strCookie = conn.getHeaderField("Set-Cookie");
InputStream is = conn.getInputStream();
StringBuilder builder = new StringBuilder();
BufferedReader reader = new BufferedReader(new InputStreamReader(is,"UTF-8"));
String line;
while ((line = reader.readLine()) != null) {
builder.append(line+ "\n");
}
result = builder.toString();
}catch(MalformedURLException | ProtocolException exception) {
exception.printStackTrace();
}catch(IOException io){
io.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
System.out.println(result);
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_basic, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
이렇게 하고 앱을 실행 해 보면...
요렇게 이쁜 리스트 뷰가 생성된다.










