IOS를 사랑하는 AOS 개발자
[Android] 안드로이드 ListView (feat.ArrayAdapter) 본문
반응형
SMALL
👼🏻 초보 안드로이드 개발자가 매번 구글링하기 싫어서 정리하는 블로그 👼🏻
안녕하세요 🤗
2021.12.26 - [Android/개발] - [Android] 안드로이드 ListView (feat.Adapter)
저번에 작성했던 Adapter 와는 조금 다른 ( 사실 잘 안쓰는것같긴한데.....)
ArrayAdapter 를 사용해서
ListView 에 내용을 추가하고 삭제하는것을 해볼거에요!!!
간단하게 뷰부터 그립시다!
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:padding="20dp">
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
<EditText
android:id="@+id/et_text"
android:layout_width="0px"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_margin="5dp"
/>
<Button
android:id="@+id/btn_add"
android:layout_width="0px"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="ADD"
android:layout_margin="5dp"
android:backgroundTint="#009688"
/>
<Button
android:id="@+id/btn_delete"
android:layout_width="0px"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Delete"
android:layout_margin="5dp"
android:backgroundTint="#F44336"
/>
</LinearLayout>
<ListView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</LinearLayout>
뷰에 진심인편...😏
후딱후딱 우리 이제 코드짜러가봅시다
반응형
MainActivity
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
// 전역변수
ArrayList<String> items;
ArrayAdapter<String> adapter;
ListView list;
EditText et_text;
Button btn_add, btn_delete;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 데이터 미리 준비
items =new ArrayList<String>();
items.add("안녕하세요!");
items.add("IOS 를 사랑하는");
items.add("AOS 초보 개발자에요 :)");
// Adapter 준비
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_single_choice,items);
// xml 연결
et_text = findViewById(R.id.et_text);
btn_add = findViewById(R.id.btn_add);
btn_delete = findViewById(R.id.btn_delete);
list = findViewById(R.id.list);
// 리스트에 adapter 연결
list.setAdapter(adapter);
list.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
// 리스트의 값 클릭 리스너
list.setOnItemClickListener(mItemClickListener);
// 버튼 클릭 리스너
btn_add.setOnClickListener(mClickListener);
btn_delete.setOnClickListener(mClickListener);
}
View.OnClickListener mClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
switch (v.getId()){
// 리스트에 추가하기
case R.id.btn_add:
String text = et_text.getText().toString();
if (text.length() != 0){
items.add(text); // 추가될 내용을 ArrayList 에 추가한다.
et_text.setText(""); // 추가했으니 입력창을 빈칸으로 초기화
adapter.notifyDataSetChanged(); // ArrayList 재구성
}
break;
// 리스트에서 선택 내용 삭제하기
case R.id.btn_delete:
int index;
index = list.getCheckedItemPosition(); // 리스트중 선택한 index 가져오기
if(index != ListView.INVALID_POSITION){
items.remove(index); // index 값을 ArrayList 에서 지운다.
list.clearChoices(); // 지운 index 를 listView 에서도 지운다.
adapter.notifyDataSetChanged(); // ArrayList 재구성
}
break;
}
}
};
AdapterView.OnItemClickListener mItemClickListener = new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String message = "선택한 내용 : " + items.get(position);
Toast.makeText(MainActivity.this, message, Toast.LENGTH_SHORT).show();
}
};
}
new ArrayAdapter<String>(this, android.R.layout.simple_list_item_single_choice,items)
들어가는 파라미터는
this | 쉽게 말하면 사용할 화면. 여기서는 MainActivity |
android.R.layout.simple_list_item_single_choice | 안드로이드에서 제공해주는 레이아웃. 커스텀 가능 |
items | 사용할 ArrayList |
간단하게 설명하면 이렇게 구성되어있어요!!!!
ArrayAdapter 만의 제공되는 메소드들을 활용해서 작성한 코드이구
구현 영상 갑시다요!
SMALL
이걸로 오늘 코드는 끄읏!
봐주셔서 감사합니다 :)
반응형
LIST
'Android ( JAVA ) > 개발' 카테고리의 다른 글
[Android] 안드로이드 Spinner + 커스텀 (feat.values) (0) | 2021.12.30 |
---|---|
[Android] 안드로이드 GridView 2탄 (feat.Adapter, AlertDialog) (0) | 2021.12.30 |
[Android] 안드로이드 GridView (feat.Adapter) (0) | 2021.12.26 |
[Android] 안드로이드 ListView (feat.Adapter) (0) | 2021.12.26 |
[Android] 안드로이드 시간, 날짜 특집4 ( Stopwatch, Calendar, TimePicker ) (0) | 2021.12.26 |
Comments