Получить переменную из onBindViewHolder в Kotlin - PullRequest
0 голосов
/ 24 октября 2018

Я пытаюсь получить значение переменной в своем основном классе, чтобы я мог загрузить это значение в свою базу данных.Я не уверен, как получить значение onBindViewHolder в MainClas.Я могу отобразить элемент в упражнении.

Полный код, запрошенный пользователем.

    class TestProjectMenuDetail() : AppCompatActivity() { 
            var itemName=""
            override fun onCreate(savedInstanceState: Bundle?) {
                super.onCreate(savedInstanceState)
                setContentView(R.layout.activity_main)
                recyclerView_main.setBackgroundColor(Color.WHITE)
                recyclerView_main.layoutManager= LinearLayoutManager(this)

                   supportActionBar?.title=navBarTitle
                fetchJSON()
            }

            //Retrieve value from OnBindViewHolder
            fun setVariable(ItemName:String)
            {
                itemName=ItemName

            }
        }
        private class MenuDetailListAdapter(val TestProjectMenudetails:Array<TestProjectMenuDetails>,context: Context): RecyclerView.Adapter<TestProjectDetailMenuViewHolder>()
        {
 private  val TestVar:TestMenuDetail= context as TestMenuDetail
            override fun onBindViewHolder(p0: TestProjectDetailMenuViewHolder, p1: Int) {
                val TestProjectmenudetail=TestProjectMenudetails.get(p1)
                p0?.customView?.itemname.text=TestProjectmenudetail.menu



     TestVar.setVariable(TestProjectmenudetail.menu)

            }

            override fun getItemCount(): Int {
                return TestProjectMenudetails.size
            }

            override fun onCreateViewHolder(p0: ViewGroup, p1: Int): TestProjectDetailMenuViewHolder {
                val layoutInflater= LayoutInflater.from(p0?.context)
                val customView=layoutInflater.inflate(R.layout.activity_TestProject_menu_detail,p0,false)
                return TestProjectDetailMenuViewHolder(customView)
            }

        }
         @Suppress("DEPRECATION")
         class TestProjectDetailMenuViewHolder(val customView: View, var Menus:TestProjectMenu?=null): RecyclerView.ViewHolder(customView)
        {
            companion object {
                val DISHES_TITLE_NAME="ITEM_NAME"
                val intialcount:Int=0
            }

            init {
                customView.setOnClickListener {
                }
            }
            fun AddClick()
            {
                val intent=Intent(customView.context,TestProjectMenuList::class.java)
                customView.context.startActivity(intent)
            }
        }

1 Ответ

0 голосов
/ 24 октября 2018

В MainClas объявите переменную для хранения значения, которое вы хотите передать из onBindViewHolder, как activityVar, а затем создайте метод:

fun setVariable(myVariable: Int) {
    activityVar = myVariable
}

замените Int на соответствующий тип данных.

Измените заголовок класса вашего адаптера следующим образом:

private class TestDetailListAdapter(context: Context, val ItemTestdetails:Array<ItemTestDetails>)

, поэтому вам нужно сначала передать ему контекст вашей деятельности, передав thisи внутри onBindViewHolder добавьте это:

val mainclas: MainClas = context as MainClas 
mainclas.setVariable(variablename)

замените variablename на имя переменной, которую вы хотите передать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...