Custom ListView의 List 클릭했을 때, 내용이 바뀌게 하려면?
조회수 602회
_Set_Data_List = new List<string>()
{ _HL_List[_HL_Default], _Ring_List[_Ring_Default], _VectTime_List[_VectTime_Default], _VectMode_List[_VectMode_Default], _WPT_List[_WPT_Default], _OS_List[_OS_Default],
"TARGET ALARM", "GUARD ZONE", "FUNC BARGE", "TX STBY", "", "◁"};
_DrawerAdapter = new ArrayAdapter<string>(_Context, Resource.Layout.Custom_DrawerList, Resource.Id._Custom_DrawerList_Text, _Set_Data_List);
_IA_List.Adapter = _DrawerAdapter;
private static void _IA_List_ItemClick(object sender, AdapterView.ItemClickEventArgs e)
{
//switch (e.Position)
//{
// case 0:
// if (_HL_Default < 4)
// {
// _HL_Default++;
// }
// else if (_HL_Default == 4)
// {
// _HL_Default = 0;
// }
// //_DrawerAdapter.Remove(_Set_Data_List[0]);
// //_Set_Data_List[0] = _HL_List[_HL_Default];
// //_DrawerAdapter.Insert(_Set_Data_List[0], 0);
// break;
}
이건 예전에 사용했던 코드인데, 이런식으로 ListView의 내용을 삭제했다가 다시 갱신하는 식으로 했엇는데요.
현재 코드는
static int _HL_Default = 0;
static string[] _HL_Small_List = { "OFF", "1", "2", "3", "4" };
static int _Big_Data = 0;
static string[] _Big_List = { "HL", "RING", "VECT TIME", "VECT MODE", "WPT MARK", "OS", "◁" };
DrawerListAdapter _Adatper = new DrawerListAdapter(mContext);
DrawerListItem _Item;
for (int i = 0; i < 10; i++)
{
_Item = new DrawerListItem();
_Item.GetSmall = _Big_List[_Big_Data];
switch(_Big_Data)
{
case 0:
_Item.GetBig = _HL_Small_List[_HL_Default];
break;
case 1:
_Item.GetBig = _Ring_Small_List[_Ring_Default];
break;
case 2:
_Item.GetBig = _VectTime_Small_List[_VectTime_Default];
break;
case 3:
_Item.GetBig = _VectMode_Small_List[_VectMode_Default];
break;
case 4:
_Item.GetBig = _WPT_Small_List[_WPT_Default];
break;
case 5:
_Item.GetBig = _OS_Small_List[_OS_Default];
break;
case 6:
break;
case 7:
break;
case 8:
break;
case 9:
break;
}
_Adatper.AddItem(_Item);
_Big_Data++;
}
_IA_List.Adapter = _Adatper;
ViewHolder를 이용해서 하나의 리스트에 두개의 텍스트를 사용하여 각각 다른 크기로 내용도 다르게 설정해놓았습니다. 여기서 리스트에 0번을 눌렀을 때, 새로운 페이지나 이런게 열리는게 아니라 HL OFF 라고 되어있는 글이 HL 1 로 바뀌면서 다른 이벤트를 나타나게 하려면 어떻게 해야할까요?
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
Item Click 시
position
을 알수 있는데, 이때adapter
에 바인딩 된 dataSet, 즉List
의 해당 position 의 값을 원하는 값으로 변경 한뒤에 adapter.notifyDataSetChanged()
를 호출 하시면 리스트 갱신을 할 수 있습니다.-
(•́ ✖ •̀)
알 수 없는 사용자
- private static void _IA_List_ItemClick(object sender, AdapterView.ItemClickEventArgs e) { switch (e.Position) { case 0: if (_HL_Default < 4) { _HL_Default++; } else if (_HL_Default == 4) { _HL_Default = 0; } _Item.GetBig = _HL_Small_List[_HL_Default]; _Adatper.NotifyDataSetChanged(); break; 이런식으로 하면 되는건가요? 알 수 없는 사용자 2018.9.14 08:52
- 네 핵심은 adapter 와 바인딩 된 list 의 값을 변경 후 notifyDataSetChanged() 로 갱신 해주는 흐름입니다. 알 수 없는 사용자 2018.9.14 10:15
- for문을 돌려놔서 그런지 계속 제일 아래 목록에서만 갱신이 되서 for문을 없애버리고 일단 다시 만들어봤습니다. _Adapter.AddItem(_HL_Small_List[_HL_Default], _Big_List[0]); 이렇게 만들고 switch (e.Position) { case 0: if (_HL_Default < 4) { _HL_Default++; } else if (_HL_Default == 4) { _HL_Default = 0; } _Adapter.NotifyDataSetChanged(); break; 이렇게 했을때, 어떻게 변환을 시켜주고 갱신을 시켜야 정상적으로 될까요? _Adpater.NotifyDataSetChanged();를 하기전에 _HL_Default 의 변환 값을 넣어줘야 하는거 같은데... 알 수 없는 사용자 2018.9.14 10:37
-
댓글 입력