maker0927
170
2020-05-15 10:01:26 작성 2020-05-15 12:17:06 수정됨
0
95

안드로이드 스튜디오 리사이클러 뷰에서 원하는 링크로 이동


개발언어는 코틀린이고요 리사이클러 뷰에서 어떻게 하면 클릭시에 클릭한 목록의 url 정보를 얻어와서 링크로 이동하게 할 수 있을까요? 초보라서 구글링을 해봐도 잘 모르겠습니다 ㅜㅜ

구체적인 방법을 알려주시면 감사하겠습니다 ㅜㅜ


이건 어댑터 부분입니다.ㅠㅠ

package com.today_news

import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
import android.widget.TextView
import android.widget.Toast
import androidx.recyclerview.widget.RecyclerView
import kotlinx.android.synthetic.main.list_item.view.*

class NewsInfoAdapter(val NewsInfoList: ArrayList<NewsInfo>) :
    RecyclerView.Adapter<NewsInfoAdapter.CustomViewHolder>() {

    override fun onCreateViewHolder(
        parent: ViewGroup,
        viewType: Int
    ): NewsInfoAdapter.CustomViewHolder {
        val view = LayoutInflater.from(parent.context).inflate(R.layout.list_item, parent, false)
        return CustomViewHolder(view)
    }

    override fun getItemCount(): Int {
        return NewsInfoList.size

    }

    override fun onBindViewHolder(holder: NewsInfoAdapter.CustomViewHolder, position: Int) {
        holder.logo.setImageResource(NewsInfoList.get(position).logo)
        holder.name.text = NewsInfoList.get(position).name

    }

    class CustomViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
        val logo = itemView.findViewById<ImageView>(R.id.iv_logo) // 로고
        val name = itemView.findViewById<TextView>(R.id.tv_name) // 이름
    }


}


이부분은 main_activity 입니다.

package com.today_news

import android.os.Bundle
import android.view.Gravity
import android.view.MenuItem
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.GravityCompat
import androidx.recyclerview.widget.LinearLayoutManager
import com.google.android.material.navigation.NavigationView
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity(), NavigationView.OnNavigationItemSelectedListener {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)


        val newsInfoList = arrayListOf(
            NewsInfo(R.drawable.kbs, "KBS", "http://news.kbs.co.kr/common/main.html"),
            NewsInfo(R.drawable.sbs, "SBS 뉴스", "https://news.sbs.co.kr/news/newsMain.do"),
            NewsInfo(R.drawable.mbc, "MBC", "https://imnews.imbc.com/pc_main.html"),
            NewsInfo(R.drawable.jtbc, "JTBC", "http://news.jtbc.joins.com/"),
            NewsInfo(R.drawable.mbn, "MBN", "https://www.mbn.co.kr/news/"),
            NewsInfo(
                R.drawable.channel_a,
                "채널 A",
                "http://m.ichannela.com/news/main/news_main_mob.do"
            ),

            NewsInfo(R.drawable.tv_chosun, "TV 조선", "http://news.tvchosun.com/"),
            NewsInfo(R.drawable.yna, "연합뉴스", "https://www.yna.co.kr/"),
            NewsInfo(R.drawable.ytn, "YTN", "https://www.ytn.co.kr/"),
            NewsInfo(R.drawable.joongang, "중앙일보", "https://joongang.joins.com/"),
            NewsInfo(R.drawable.donga, "동아일보", "https://www.donga.com/"),
            NewsInfo(R.drawable.hani, "한겨례", "http://www.hani.co.kr/"),
            NewsInfo(R.drawable.khan, "경향신문", "http://www.khan.co.kr/"),
            NewsInfo(R.drawable.segye, "세계일보", "https://www.segye.com/"),
            NewsInfo(R.drawable.seoul, "서울신문", "https://www.seoul.co.kr/"),
            NewsInfo(R.drawable.sisain, "시사인", "https://www.sisain.co.kr/"),
            NewsInfo(R.drawable.tbs, "TBS", "http://tbs.seoul.kr/news/index.do")
        )

        btn_navi.setOnClickListener {
            layout_drawer.openDrawer(GravityCompat.START)
        }

        naviView.setNavigationItemSelectedListener(this) // 네비게이션 메뉴 아이템에 클릭 속성 부여

        rv_news.layoutManager = LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false)
        rv_news.setHasFixedSize(true)

        rv_news.adapter = NewsInfoAdapter(newsInfoList)
    }

    override fun onNavigationItemSelected(item: MenuItem): Boolean { // 네비게이션 메뉴 아이템 클릭 시 수행
        when (item.itemId) {
            R.id.lightmode -> Toast.makeText(applicationContext, "기능 개발 중입니다", Toast.LENGTH_SHORT)
                .show()
        }
        layout_drawer.closeDrawers() // 네비게이션 뷰 닫기
        return false
    }

    override fun onBackPressed() {
        if (layout_drawer.isDrawerOpen(GravityCompat.START)) {
            layout_drawer.closeDrawers()
        } else {
            super.onBackPressed()
        }

    }
}


0
  • 답변 0

  • 로그인을 하시면 답변 을 등록할 수 있습니다.