반응형
package com.example.customadapter;
import androidx.appcompat.app.AppCompatActivity;
import android.content.ContentProviderClient;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
//list 항목에 쓸 문자열
String[] data = {"data1", "data2","data3","data4","data5","data6"};
// define variables
ListView list1; //main.xml의 listview 연결예정
TextView text1; //main.xml의 textview 연결예정
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//connect to xml id
list1 = findViewById(R.id.listview1);
text1 = findViewById(R.id.textView2);
//만든 class ListAdapter setting (연결 to main.xml)
ListAdapter adapter = new ListAdapter();
list1.setAdapter(adapter);
}
//@onCreat{} finish
//class adapter setting - row.xml 과 연결.
class ListAdapter extends BaseAdapter{
//리스너도 연결
BtnListener listener = new BtnListener();
// listView의 항목갯수
@Override
public int getCount() {
return data.length;
}
//
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override //row.xml view 구성연결
public View getView(int position, View convertView, ViewGroup parent) {
//재사용 가능한 뷰(convertView)가 없다면, 뷰를 만든다.
if(convertView == null){
LayoutInflater inflater = getLayoutInflater(); //row layout에 연결
convertView = inflater.inflate(R.layout.row,null);
}
//뷰를 구성한다.
TextView sub_text = convertView.findViewById(R.id.textview1); //row textview연결
Button sub_btn1 = convertView.findViewById(R.id.button1); //버튼에 리스너 연결
Button sub_btn2 = convertView.findViewById(R.id.button2);
sub_btn1.setOnClickListener(listener);
sub_btn2.setOnClickListener(listener);
sub_btn1.setTag(position); //버튼에 인덱스 값 저장 (tag이용)
sub_btn2.setTag(position);
sub_text.setText(data[position]);
//뷰를 반환한다.
return convertView;
}
}
//class adapter finish
//버튼 클릭시, 셋팅할 리스터
class BtnListener implements View.OnClickListener{
@Override
public void onClick(View v) {
//리스트의 인덱스값 추출
int position = (Integer)v.getTag(); //(tag이용)
// button id추출
int id = v.getId();
switch (id){
case R.id.button1 :
text1.setText("clicked fist button" + position);
break;
case R.id.button2 :
text1.setText("clicked second button" + position);
break;
}
}
}
// class 리스너 finish
}
'open coding' 카테고리의 다른 글
open coding - fragment 기본 코딩 (0) | 2020.11.16 |
---|---|
open coding- 시스템 메시지- broadCastreceiver 이용 ex)부팅완료 Toast로 띄우기 / 수신메세지 Toast로 띄우기 (0) | 2020.11.13 |
Open coding- Intent 기본개념 코딩.(다른 Activity 실행하기) (0) | 2020.11.10 |
Spinner - adapter이용 - 회원가입, 게시판에 주로 이용 - open (0) | 2020.10.21 |
Tow Line ListView - simpleAdapter 이용 - open (0) | 2020.10.18 |