RecyclerView에서 데이터를 읽고 BottomSheet로 보내는 방법

구라 르 쉬딥 싱

기기에 설치된 앱 목록을 표시하기 위해 recyclerView를 사용하고 있습니다.

이미지- 링크

자세한 내용은 ViewHolder 클래스의 LongPress에서 bottomSheet를 사용하지만 선택한 탭의 데이터 를 더 자세한 정보 (패키지 이름, API 수준 등)와 함께 bottomSheet로 보내는 방법 ... 참조 이미지 참조

나는 원한다- 링크

나는 아래 코딩에서 얻는다- 링크

MainActivity.kt

class MainActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
 
    recyclerView.adapter = Adapter // I set adapter here with function getApps()
    recyclerView.layoutManager = LinearLayoutManager(this)

private fun getApps(): List<DataClass> {

    // here I get apps icon,name,size and return list<DataClass>
       
  return list
}

Adapter.kt

    class Adapter(private val listOfApps: List<AppData>) :
    RecyclerView.Adapter<Adapter.ViewHolder>() {

    class ViewHolder(appView: View) : RecyclerView.ViewHolder(appView), View.OnClickListener,
        View.OnLongClickListener {

        init {
            appView.setOnClickListener(this)
            appView.setOnLongClickListener(this)
        }

        val icon: ImageView = appView.App_icon
        val name: TextView = appView.App_name
        val size: TextView = appView.App_size

        override fun onClick(v: View?) {
            Toast.makeText(v?.context, "OnClick", Toast.LENGTH_SHORT).show()
        }

        override fun onLongClick(v: View?): Boolean { 
         
           // I want here on Long press BottomSheet appears with details

            val bottomSheetDialog = BottomSheetDialog()
            // Show bottomSheet on LongPress
            bottomSheetDialog.show(
                (v?.context as FragmentActivity).supportFragmentManager, bottomSheetDialog.tag
            )
            return true
        }
    }

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

    override fun getItemCount() = listOfApps.size

    override fun onBindViewHolder(holder: ViewHolder, position: Int) {

        val currentItem = listOfApps[position]
        holder.icon.setImageDrawable(currentItem.icon)
        holder.name.text = currentItem.name
        holder.size.text = currentItem.size
    }
}

BottomSheetDialog.kt

    class BottomSheetDialog: BottomSheetDialogFragment() {

    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        return inflater.inflate(R.layout.bottom_sheet, container, false)

    }

    override fun getTheme(): Int = R.style.RoundBottomSheetDialog
}

DataClass

    data class AppData(
    val icon: Drawable,
    val name: String,
    val size: String,
)
Victor Petrovski

현재 코드로 가장 쉬운 해결책은 다음과 같습니다.

  1. 생성자에 AppData를 포함하도록 BottomSheetDialog를 수정하십시오.

    class BottomSheetDialog (val appData : AppData) : BottomSheetDialogFragment () {

     override fun onCreateView(
         inflater: LayoutInflater,
         container: ViewGroup?,
         savedInstanceState: Bundle?
     ): View? {
         return inflater.inflate(R.layout.bottom_sheet, container, false)
     }
    
     override fun getTheme(): Int = R.style.RoundBottomSheetDialog
    

    }

  2. ViewHolder 클래스 내에 onBind 메서드를 추가합니다.

     fun onBind(appData: AppData) {
         icon.setImageDrawable(currentItem.icon)
         name.text = currentItem.name
         size.text = currentItem.size
     }
    
  3. 어댑터 내에서 onBindViewHolder 메서드를 수정하여 해당 onBind 메서드를 호출합니다.

    fun onBindViewHolder (holder : ViewHolder, position : Int) {holder.onBind (listOfApps [position])} 재정의

  4. ViewHolder lateinit var currentItem: AppData내부에 onBind 내부에 설정되며 onLongClick다음 에서 사용할 수 있습니다 .

    class ViewHolder (appView : View) : RecyclerView.ViewHolder (appView), View.OnClickListener, View.OnLongClickListener {. . . fun onLongClick (v : View?) : Boolean {

         // I want here on Long press BottomSheet appears with details
         **val bottomSheetDialog = BottomSheetDialog(currentItem)**
         // Show bottomSheet on LongPress
         bottomSheetDialog.show(
             (v?.context as FragmentActivity).supportFragmentManager, bottomSheetDialog.tag
         )
         return true
     }
    
     **private lateinit var currentItem: AppData**
    
     fun onBind(appData: AppData) {
         **currentItem = appData**
         icon.setImageDrawable(currentItem.icon)
         name.text = currentItem.name
         size.text = currentItem.size
     }
    

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

서버에서 클라이언트로 데이터를 읽고 보내는 방법은 무엇입니까?

분류에서Dev

SQL 테이블에서 데이터를 읽고 C # 드라이버를 사용하여 MongoDB로 내보내는 일반적인 방법

분류에서Dev

Postgres에서 큰 개체를 포함한 데이터를 내보내고 나중에 내 보낸 데이터를 Greenplum으로 가져 오는 방법

분류에서Dev

hbase에서 SQL Server로 데이터를 내보내는 방법

분류에서Dev

보고서를 내보내고 데이터로 열을 표시하는 방법은 무엇입니까?

분류에서Dev

여러 페이지의 ssrs 보고서 데이터를 하나의 시트로 내보내는 방법

분류에서Dev

curl에서 데이터를 보내고받는 방법

분류에서Dev

루프에서 데이터를 보내고받는 방법

분류에서Dev

목록에서 데이터를 수집하고 원시 텍스트로 내보내는 방법

분류에서Dev

열을 병합하지 않고 HTML에서 Excel로 표 형식 데이터를 내보내는 방법

분류에서Dev

React에서 Express로 데이터를 보내는 방법

분류에서Dev

Javascript로 양식 데이터를 보내고받는 방법

분류에서Dev

C #에서 JSONArray를 만들고 해당 데이터를 Android 앱으로 보내는 방법

분류에서Dev

데이터베이스에서 항목을 삭제 한 후 내 목록보기를 새로 고치는 방법

분류에서Dev

Excel .xlsx에서 데이터를 읽고 가져 오는 방법

분류에서Dev

json을 사용하지 않고 PHP에서 Android로 데이터를 보내는 방법

분류에서Dev

PHP에서 Java / Android로 데이터를 보내고 검색하는 방법은 무엇입니까?

분류에서Dev

Facebook 광고 API / PHP SDK에서 보호 된 데이터를 읽는 방법

분류에서Dev

Node.js를 사용하여 json 파일에서 데이터를 읽고 읽은 데이터를 html로 표시하는 방법은 무엇입니까?

분류에서Dev

Visual Studio에서 arduino 직렬 모니터 데이터를 읽고 배열로 저장하는 방법

분류에서Dev

mysqlworkbench에서 SQL Server로 데이터베이스를 내보내는 방법

분류에서Dev

파일에서 데이터를 읽고 데이터를 int로 변환하고 벡터에 저장하는 방법

분류에서Dev

노드 서버로 데이터를 보내는 방법

분류에서Dev

XML 데이터를 읽고 배열로 변환하는 방법

분류에서Dev

안드로이드에서 PHP 서버로 데이터를 보내는 방법

분류에서Dev

자식에서 부모의 부모로 데이터를 내보내는 방법

분류에서Dev

Access에서 텍스트 파일로 데이터를 내보내는 방법

분류에서Dev

ASP.NET MVC에서 Grid.mvc로 데이터를 내보내는 방법

분류에서Dev

PHP 스크립트에서 Android 기기로 동시에 데이터를 쓰고 읽는 방법

Related 관련 기사

  1. 1

    서버에서 클라이언트로 데이터를 읽고 보내는 방법은 무엇입니까?

  2. 2

    SQL 테이블에서 데이터를 읽고 C # 드라이버를 사용하여 MongoDB로 내보내는 일반적인 방법

  3. 3

    Postgres에서 큰 개체를 포함한 데이터를 내보내고 나중에 내 보낸 데이터를 Greenplum으로 가져 오는 방법

  4. 4

    hbase에서 SQL Server로 데이터를 내보내는 방법

  5. 5

    보고서를 내보내고 데이터로 열을 표시하는 방법은 무엇입니까?

  6. 6

    여러 페이지의 ssrs 보고서 데이터를 하나의 시트로 내보내는 방법

  7. 7

    curl에서 데이터를 보내고받는 방법

  8. 8

    루프에서 데이터를 보내고받는 방법

  9. 9

    목록에서 데이터를 수집하고 원시 텍스트로 내보내는 방법

  10. 10

    열을 병합하지 않고 HTML에서 Excel로 표 형식 데이터를 내보내는 방법

  11. 11

    React에서 Express로 데이터를 보내는 방법

  12. 12

    Javascript로 양식 데이터를 보내고받는 방법

  13. 13

    C #에서 JSONArray를 만들고 해당 데이터를 Android 앱으로 보내는 방법

  14. 14

    데이터베이스에서 항목을 삭제 한 후 내 목록보기를 새로 고치는 방법

  15. 15

    Excel .xlsx에서 데이터를 읽고 가져 오는 방법

  16. 16

    json을 사용하지 않고 PHP에서 Android로 데이터를 보내는 방법

  17. 17

    PHP에서 Java / Android로 데이터를 보내고 검색하는 방법은 무엇입니까?

  18. 18

    Facebook 광고 API / PHP SDK에서 보호 된 데이터를 읽는 방법

  19. 19

    Node.js를 사용하여 json 파일에서 데이터를 읽고 읽은 데이터를 html로 표시하는 방법은 무엇입니까?

  20. 20

    Visual Studio에서 arduino 직렬 모니터 데이터를 읽고 배열로 저장하는 방법

  21. 21

    mysqlworkbench에서 SQL Server로 데이터베이스를 내보내는 방법

  22. 22

    파일에서 데이터를 읽고 데이터를 int로 변환하고 벡터에 저장하는 방법

  23. 23

    노드 서버로 데이터를 보내는 방법

  24. 24

    XML 데이터를 읽고 배열로 변환하는 방법

  25. 25

    안드로이드에서 PHP 서버로 데이터를 보내는 방법

  26. 26

    자식에서 부모의 부모로 데이터를 내보내는 방법

  27. 27

    Access에서 텍스트 파일로 데이터를 내보내는 방법

  28. 28

    ASP.NET MVC에서 Grid.mvc로 데이터를 내보내는 방법

  29. 29

    PHP 스크립트에서 Android 기기로 동시에 데이터를 쓰고 읽는 방법

뜨겁다태그

보관