DevBoi

[커스텀 리스트 뷰] 커스텀 리스트 뷰 만들기 본문

[Mobile]/[Flutter]

[커스텀 리스트 뷰] 커스텀 리스트 뷰 만들기

HiSmith 2021. 9. 21. 15:02
반응형

안드로이드 앱개발을 취미로 해보자! 라고 하면서, 오랜만에 이것저것 하게 되었다.

 

간단하게 예제 및 실습 변형이 가능한 틀 정리를 하려고한다.

안드로이드 네이티브 기술은 프론트엔드쪽 관련 부분이 많아서, 사실 깊숙히 이해할 필요는 나는없다

나는, 백엔드 개발이 주고, 앱은 그냥 출시하면서 재미로 살고싶은 사람이라 ㅋㅋ

무튼 개발 스타트

필요한 리스트 (모델, 어댑터,메인에서 사용방법)

 

1. 모델

 

 

2. 어댑터

 

3. 메인 예제

간단하게 이렇게 사용하면된다

 

간혹, 메인에서 내부클래스로 선언하는 방법이 있는데, 이방법은 한 파일에 너무 덕지덕지 소스가 될수 있기 때문에

쉿하고, 그냥 이렇게 사용하는 것을 추천한다.

 

가져다가, 응용을 위한 복붙 소스이다.

package com.smith.myhabit.ui.home;

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;

import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.smith.myhabit.R;

import com.smith.myhabit.model.Habits;
import com.smith.myhabit.util.HabitSingleAdapter;

public class HomeFragment extends Fragment {

View view;
ListView listView;
HabitSingleAdapter adapter;
FloatingActionButton floatButton;
public View onCreateView(@NonNull LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
view = inflater.inflate(R.layout.fragment_home,container,false);

listView = (ListView) view.findViewById(R.id.habit_list);
floatButton = (FloatingActionButton) view.findViewById(R.id.addHabitButton);
floatButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {

}
});

adapter = new HabitSingleAdapter();
//테스트 습관 리스트
adapter.addItem(new Habits("test1"));
adapter.addItem(new Habits("test2"));
adapter.addItem(new Habits("test3"));
adapter.addItem(new Habits("test4"));

listView.setAdapter(adapter);
return view;
}

@Override
public void onDestroyView() {
super.onDestroyView();
}

}

 

 

 

 

2) 어댑터

package com.smith.myhabit.util;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

import androidx.recyclerview.widget.RecyclerView;

import com.smith.myhabit.R;
import com.smith.myhabit.model.Habits;

import java.util.ArrayList;

public class HabitSingleAdapter extends BaseAdapter {
private ArrayList<Habits> myHabit = new ArrayList<>();
public int getCount() {
return myHabit.size();

}
public Habits getItem(int position){
return myHabit.get(position);
}
public long getItemId(int position){
return 0;
}
public View getView(int position, View convertView , ViewGroup parent) {
Context context = parent.getContext();
if(convertView == null){
LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.habit_item,parent,false);
}
TextView habitName = (TextView) convertView.findViewById(R.id.habitname);
Habits myhabit = getItem(position);
habitName.setText(myhabit.getText());
return convertView;


}
public void addItem(Habits habit){
myHabit.add(habit);
}
}

 

 

물론, 변형은 필요하고, 액티비티 가 아닌, fragment를 사용해서 view를 뿌리는 방식이다.

 

반응형