안드로이드 확장 리스트뷰와 터치 이벤트에 관해서
조회수 1512회
public class PlatformMenuContentsUI extends AbstractUIFragment {
public void onAttach(Activity activity) { super.onAttach(activity); }
public static PlatformMenuContentsUI newInstance() { PlatformMenuContentsUI f = new PlatformMenuContentsUI(); return f; }
@Override public View onCreateView(final LayoutInflater inflater, final ViewGroup container, Bundle savedInstanceState) { final View v = inflater.inflate(R.layout.platform_menu_contents_layout, container,false);
// 리스트뷰에 대한 정의
final String[] menuItems = { "General",
"Rader",
"Targets",
"Alarm",
"Initial Setup" };
final TextView mart_reg_txt = (TextView) v.findViewById(R.id.mart_reg_txt); // 텍스트뷰에 대한 정의
final ExpandableListView general_elv = (ExpandableListView) v.findViewById(R.id.ex_general_list); // 확장 리스트뷰에 대한 정의
final ExpandableListView rader_elv = (ExpandableListView) v.findViewById(R.id.ex_rader_list);
final ListView listView = (ListView) v.findViewById(R.id.main_list); // 리스트뷰에 대한 정의
final ArrayAdapter<String> listViewAdapter = new ArrayAdapter<String>( // 리스트뷰를 연결 시켜 줄 어댑터에 대한 정의, simple_list_item_1 을 xml 파일을 만들어서 변경해주면 폰트의 크기 및 색상이 변경 가능
getActivity(),
R.layout.ex_list_custom,
menuItems
);
listView.setAdapter(listViewAdapter);
/*
general_elv.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() { // 리스트뷰의 첫 번째 항목에 대한 확장 리스트뷰의 부모들의 클릭 이벤트
@Override
public boolean onGroupClick(ExpandableListView expandableListView, View view, int i, long l) {
switch (i) {
case 0 :
Toast.makeText(getActivity(), "첫번째 확장 리스트뷰 입니다", Toast.LENGTH_SHORT).show();
break;
case 1 :
Toast.makeText(getActivity(), "두번째 확장 리스트뷰 입니다", Toast.LENGTH_SHORT).show();
break;
}
return false;
}
});
*/
general_elv.setOnChildClickListener(new ExpandableListView.OnChildClickListener() { // 리스트뷰의 첫 번째 항목에 대한 확장 리스트뷰의 자식들의 클릭 이벤트
@Override
public boolean onChildClick(ExpandableListView general_ex, View general_view, int i, int i1, long l) {
if ( i == 0 ) { // i(부모)가 0번 일 경우
switch (i1) {
case 0 :
Toast.makeText(getActivity(), "한국어를 선택하였습니다.", Toast.LENGTH_SHORT).show();
break;
case 1 :
Toast.makeText(getActivity(), "日本語を 選択しました。 ", Toast.LENGTH_SHORT).show();
break;
case 2 :
Toast.makeText(getActivity(), "You have chosen English.", Toast.LENGTH_SHORT).show();
break;
case 3 :
Toast.makeText(getActivity(), "中文选择了", Toast.LENGTH_SHORT).show();
break;
}
}
if ( i == 1 ) { // i(부모)가 1번 일 경우
switch (i1) {
case 0 :
}
}
if ( i == 2 ) {
switch(i1) {
case 0 :
Intent intent_naver = new Intent(Intent.ACTION_VIEW);
Uri uri_naver = Uri.parse("http://m.naver.com");
intent_naver.setData(uri_naver);
startActivity(intent_naver);
break;
case 1 :
Intent intent_daum = new Intent(Intent.ACTION_VIEW);
Uri uri_daum = Uri.parse("http://m.daum.net");
intent_daum.setData(uri_daum);
startActivity(intent_daum);
break;
}
}
return false;
}
}); listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { // 리스트 클릭 이벤트 @Override public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) { switch (position) { case 0: // Toast.makeText(getActivity(), "첫번째 리스트를 클릭", Toast.LENGTH_SHORT).show(); general_elv.setAdapter(new GeneralTabsListAdapter()); rader_elv.setAdapter((ExpandableListAdapter) null); mart_reg_txt.setText(null); //mart_reg_txt.setText("첫번째 리스트를 클릭하셨습니다."); break;
case 1:
// Toast.makeText(getActivity(), "두번째 리스트를 클릭", Toast.LENGTH_SHORT).show();
general_elv.setAdapter((ExpandableListAdapter) null);
rader_elv.setAdapter(new RaderTabsListAdapter());
mart_reg_txt.setText(null);
//mart_reg_txt.setText("Rader 리스트는 준비중입니다.");
break;
case 2:
// Toast.makeText(getActivity(), "세번째 리스트를 클릭", Toast.LENGTH_SHORT).show();
general_elv.setAdapter((ExpandableListAdapter) null);
rader_elv.setAdapter((ExpandableListAdapter) null);
mart_reg_txt.setText("Targets 리스트는 준비중입니다.");
break;
case 3 :
// Toast.makeText(getActivity(), "세번째 리스트를 클릭", Toast.LENGTH_SHORT).show();
general_elv.setAdapter((ExpandableListAdapter) null);
rader_elv.setAdapter((ExpandableListAdapter) null);
mart_reg_txt.setText("Alarm 리스트는 준비중입니다.");
break;
case 4 :
// Toast.makeText(getActivity(), "세번째 리스트를 클릭", Toast.LENGTH_SHORT).show();
general_elv.setAdapter((ExpandableListAdapter) null);
rader_elv.setAdapter((ExpandableListAdapter) null);
mart_reg_txt.setText("Initial Setup 리스트는 준비중입니다.");
break;
}
} });
listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { // 리스트의 롱 클릭 이벤트
@Override
public boolean onItemLongClick(AdapterView<?> adapterView, View view, int position, long l) {
switch (position) {
case 0 :
Toast.makeText(getActivity(), "첫번째 리스트를 롱 클릭", Toast.LENGTH_SHORT).show();
break;
case 1 :
Toast.makeText(getActivity(), "두번째 리스트를 롱 클릭", Toast.LENGTH_SHORT).show();
break;
case 2 :
break;
}
return true;
}
});
return v; }
public class GeneralTabsListAdapter extends BaseExpandableListAdapter {
private String[] groups = {"☆Language", "☆Units", "☆Time Offset", "☆Key Volume", "☆Buzzer", "☆HDMI", "☆Factory Reset"};
private String[][] chilren = {
// 기본적으로 확장 리스트뷰의 글자크기 및 속성 변경 하는 커스텀 방법 찾기
{ "한국어", "日本語", "English", "中文" }, // Toast 출력, 1번 완료
{ }, // 같은 영역에 텍스트 출력, 2번 완료 ( 추가로 뒤로가기 버튼 만들어보기 - 보류 )
{ "Naver(네이버)", "Daum(다음)" }, // 인터넷 연결, 3번 완료
{ "알림창", "알림창 [2]", "알림창 [3]" }, // 새로운 창 띄우기, 4번 완료 ( 리스트뷰, 라디오박스, 체크박스 모두 완료 )
{ "일번", "이번", "삼번", "사번" },
{ "일번", "이번", "삼번", "사번" },
{ "일번", "이번", "삼번", "사번" }
};
// private Context mContext;
@Override
public int getGroupCount() {
return groups.length;
}
@Override
public int getChildrenCount(int i) {
return chilren[i].length;
}
@Override
public Object getGroup(int i) {
return groups[i];
}
@Override
public Object getChild(int i, int i1) {
return chilren[i][i1];
}
@Override
public long getGroupId(int i) {
return i;
}
@Override
public long getChildId(int i, int i1) {
return i1;
}
@Override
public boolean hasStableIds() {
return true;
}
@Override
public View getGroupView(int i, boolean b, View view, ViewGroup viewGroup) {
TextView textView = new TextView(PlatformMenuContentsUI.this.getActivity());
textView.setText(getGroup(i).toString());
return textView;
}
@Override
public View getChildView(int i, int i1, boolean b, View view, ViewGroup viewGroup) {
TextView textView = new TextView(PlatformMenuContentsUI.this.getActivity());
textView.setText(getChild(i, i1).toString());
return textView;
}
@Override
public boolean isChildSelectable(int i, int i1)
{
return true;
}
}
@Override
public void DataProtocol(Object protocol) {
FragmentProtocol proto = (FragmentProtocol) protocol;
Log.i("TEST","CMD : "+proto.get_cmd()+" INDEXNAME "+ proto.get_title());
}
@Override
public void setController(Object o) {
// TODO Auto-generated method stub
_controller = (MainController) o;
}
}
일단 현재 코드입니다.
이 코드에서 확장 리스트뷰에 부모그룹과 자식 그룹에 각각 커스텀을 해주려면 어떤식으로 해얗라까요?
그리고 화면을 터치했을 때, 좌표를 구하려고 하는데 어떤식으로 코딩을 해야할까요?
한 2주째 고민중인데 두 문제다 전혀 해결에 기미가 안보이네요 ㅠㅠ
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
댓글 입력