본문 바로가기
IT, 프로그래밍, 네트워크 각종정보

APP 하단 Navigation 버튼 추가 해보기 (주식 자동매매 프로그래밍 GUI - 2) 코딩 Coding 가이드, 자바 코틀린, xingAPI M GUI

by 쿨꾸7 2020. 10. 10.
반응형

이번에는 xingAPI M 기반 GUI의 APP 하단에 신규로 네비게이션을 추가해 보도록 하겠습니다.

xingAPI M 기반의 코드를 신규로 작성하기 보다는 코드 수정을 통해 접근하는 방법이 좀더 이해가 쉽기 때문에 이러한 방식으로 진행 할 예정입니다.

 

▶ App 하단 GUI Navigation 추가

 

먼저 App GUI 하단에 Navigation을 추가해 보겠습니다.

smain_navi.xml은 네비게이션 디자인 용 xml 소스 입니다.

 

  <include
        android:id="@+id/navi_11"
        layout="@layout/item_navi_btn"
        android:layout_width="65dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:text="TextView"
        android:visibility="visible" />     /*기존 네비게이션 코드*/

    <include
        android:id="@+id/navi_12"
        layout="@layout/item_navi_btn"
        android:layout_width="65dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:text="TextView"
        android:visibility="visible" />     /*신규 추가 네비게이션*/

 

위와 같이 navi_12라는 이름으로 신규 추가를 합니다.

 

▶ 신규 추가 GUI Navigation 처리 코드 추가

 

이번에는 신규로 navigation 추가 된 12번 아이템을 처리하는 코드를 수정 작성해 보겠습니다.

MainView.kt 소스 파일을 아래와 같이 수정합니다.

 

val subviewlst = listOf<Triple<Int,String,Int>>(
Triple(R.id.navi_12,"뉴스수신",R.drawable.l_icon_01), /*신규로 추가된 navi*/
Triple(R.id.navi_1,"시간대별",R.drawable.l_icon_01),
Triple(R.id.navi_2,"기간주가",R.drawable.l_icon_01),
Triple(R.id.navi_3,"분별주가",R.drawable.l_icon_01),
Triple(R.id.navi_4,"주식호가",R.drawable.l_icon_01),
Triple(R.id.navi_5,"현물계좌주문체결",R.drawable.l_icon_01),
Triple(R.id.navi_6,"주문",R.drawable.l_icon_01),
Triple(R.id.navi_7,"TR조회 테스트",R.drawable.l_icon_01),
Triple(R.id.navi_8,"관심종목 테스트",R.drawable.l_icon_01),
Triple(R.id.navi_9,"잔고조회",R.drawable.l_icon_01),
Triple(R.id.navi_10,"체결내역",R.drawable.l_icon_01),
Triple(R.id.navi_11,"종목검색",R.drawable.l_icon_01)
)

 

위와 같이 네비를 처리할 리스트를 추가해 보았습니다.

 

        val lstid = listOf<Triple<Int,String,Int>>(
            Triple(R.id.navi_log,"로그인",R.color._WHITE),
            subviewlst.get(0),
            subviewlst.get(1),
            subviewlst.get(2),
            subviewlst.get(3),
            subviewlst.get(4),
            subviewlst.get(5),
            subviewlst.get(6),
            subviewlst.get(7),
            subviewlst.get(8),
            subviewlst.get(9),
            subviewlst.get(10),
            subviewlst.get(11), /*새로 추가된 navi (12의 경우 11번째)를 초기화 합니다.*/
            Triple(R.id.navi_webview,"WebPage",R.drawable.l_icon_01)
        )

 

subviewlst를 초기화 합니다.

 

    fun onNaviBtnClicked(v: View)
    {
        val viewId = v.id
        var title = ""
        var fragment : Fragment? = null
        when(viewId)
        {
            R.id.navi_log->{
                LoginProcess()
                return
            }
            subviewlst.get(0).first->{
                if(!bJava) {
                    //fragment = s1001()
                    fragment = s1001_DM()
                }
                else {
                    fragment = s1001_j()
                }
                title = subviewlst.get(0).second;
            }
            subviewlst.get(1).first->{
                fragment = s1002()
                title = subviewlst.get(1).second;
            }
            .
            . /*생략*/
            .
            subviewlst.get(10).first->{
                fragment =  s1010() //SocketTest()
                manager.removeServiceAll(m_nHandle);
                title = subviewlst.get(10).second;
            }
            subviewlst.get(11).first->{
                fragment =  s1010() //SocketTest()
                manager.removeServiceAll(m_nHandle);
                title = subviewlst.get(11).second;
            } /* 새로 추가한 아이템, 향후 처리할 fragment를 추가하면 됩니다, 우선은 s1010으로 반영*/

            R.id.navi_webview->{

                val intent = Intent(this, WebViewActivity::class.java)
                startActivity(intent)
                return
            }
        }

 

신규 추가 후 초기화 된 리스트를 처리할 버튼 리스트를 생성합니다.

터치가 된 이후 처리할 fragment도 추가가 되었는데, 향후 처리할 클래스가 확정되면 해당 클래스를 연결해 주면 됩니다.

 

▶ 결론

 

GUI중 App 하단 Navi를 추가해 보았습니다.

추가된 Navi 버튼을 클릭 했을때 처리할 수 있는 클래스 및 페이지 생성을 이어서 소개해 보도록 하겠습니다.

반응형