티스토리 뷰
간단하게 메뉴나 목록을 만들수 있는 ListView에 대해서 알아보겠습니다.
ListView
우선 xml에서 ListView를 만들어 주었습니다.
1 2 3 4 | <ListView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/listView" /> | =cs |
이제 MainActivity에서 ListView에 Item을 추가시켜 주겠습니다.
1 2 3 4 5 6 7 8 9 10 11 | ListView test; public class MainActivity extends AppCompatActivity { ListView test; // ListView 형태를 선언. String[] item; // String 배열을 추가. ArrayAdapter<String> adapter; // String과 ListView를 연결해주기 위해 선언. @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } } | cs |
ListView인 만큼 Item이 여러개 이어야 합니다. 그래서 String을 배열로 선언해주었습니다. 그리고 ListView와 Item을 연결해주는 ArrayAdapter도 선언해주었습니다. 다음으로 Item의 값들을 만들어 주겠습니다. 테스트용이므로 5개만 만들어 보았습니다.
1 2 3 4 5 6 | test = (ListView) findViewById(R.id.listView); item = new String[5]; for(int i= 0; i<5; i++){ item[i] = "ListView Example "+i; } | cs |
for문을 사용해서 5개를 만들어 보았습니다. 이제 ListView와 들어갈 Item의 준비가 끝났으니 Adapter를 통한 연결을 해보겠습니다.
1 | adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,item); | cs |
Adapter에 들어가는 인자를 살펴보겠습니다. this는 사용하는 Activity이고, 2번째로 들어가는 인자는 ListView의 디자인이 들어가게 됩니다. 따라서 사진이나 다른것들이 들어가는 ListView를 만들고 싶으시면 Custom한 xml과 Adapter를 만들어 주어야합니다. 이부분은 후에 다루어 보겠습니다. 3번째는 앞서 만들었던 Item이 들어갔습니다. 이제 Adapter도 만들어졌으니 ListView와 연결해 보겠습니다.
1 | test.setAdapter(adapter); | cs |
ListView로 선언되었던 test에 setAdapter를 통해 방금 생성했던 adapter와 연결시켰습니다. 지금까지한것의 결과는 다음과 같습니다.
이제 기본으로 제공해주는 ListView의 외적 역활은 끝이 났습니다. 하지만 목록이 있으면 각각의 Item을 클릭하였을때 어떠한 일을 할까도 있어야합니다. setOnItemClickListener가 역활을 해줍니다.
1 2 3 4 5 6 7 | test.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { text.setText(testText[position]); } }); | cs |
int position이 ListView의 몇 번째 List가 클릭되었는가를 알려주는 변수입니다. 따라서 에제에서는 해당 번째 Item을 TextView에 나타내고 있습니다. 그리고 결과는 다음과 같습니다.
간단히 ListView에 대해서 알아보았습니다~!
MainActivity 코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | public class MainActivity extends AppCompatActivity { ListView test; // ListView 형태를 선언. TextView text; // TextView 형태를 선언. String[] testText = new String[5]; String[] item; // String 배열을 추가. ArrayAdapter<String> adapter; // String과 ListView를 연결해주기 위해 선언. @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); test = (ListView) findViewById(R.id.listView); // xml의 ListView를 등록 text = (TextView) findViewById(R.id.textView); item = new String[5]; for(int i= 0; i<5; i++){ item[i] = "ListView Example "+i; testText[i] = ""+i+" 번째의 List를 눌러 이게 나왔습니다!"; } adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,item); test.setAdapter(adapter); test.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { text.setText(testText[position]); } }); } } | cs |
'안드로이드' 카테고리의 다른 글
[안드로이드] 카카오 SDK 최신 버전 확인 (0) | 2017.05.21 |
---|---|
[안드로이드] 라이브러리(오픈소스) 모음 (0) | 2017.04.25 |
[안드로이드] ScrollView 간단 예제 (0) | 2017.04.22 |
[안드로이드] 백 버튼 팝업창 종료 이벤트 예제 (0) | 2017.04.22 |
[안드로이드] ProgressBar(프로그래스바) 예제 (0) | 2017.04.21 |
- Total
- Today
- Yesterday