как получить доступ к списку, созданному из другого класса в Android - PullRequest
0 голосов
/ 02 октября 2019

я создал список, в котором хранится значение из API. в моем случае buildingFragment.

и моя проблема в том, как я могу получить доступ к списку, созданному из другого класса. так что я могу сделать поисковый фильтр.

просто я хочу создать поисковый фильтр в searchFragment, используя список, созданный в buildingFragment

ниже - мой buildingFragment

package com.example.rsquare_android_fixed.mywork.building

import android.os.AsyncTask
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import com.example.rsquare_android_fixed.R
import com.example.test.mainF.Address_data
import kotlinx.android.synthetic.main.fragment_building.*
import org.json.JSONArray
import java.net.HttpURLConnection
import java.net.URL

class buildingFragment: Fragment(){

    override fun onCreateView(inflater: LayoutInflater,container: ViewGroup?,savedInstanceState: Bundle?): View? {

        val inflate=inflater.inflate(R.layout.fragment_building, container, false)

        val url="url"
        AsyncTaskHandleJson().execute(url)
        return inflate
    }

    inner class AsyncTaskHandleJson: AsyncTask<String, String, String>(){
        override fun doInBackground(vararg url: String?): String {
            var text:String
            val connection= URL(url[0]).openConnection() as HttpURLConnection

            try{
                connection.connect()
                text=connection.inputStream.use{it.reader().use{reader->reader.readText()}}
            }
            finally{
                connection.disconnect()
            }
            return text
        }

        override fun onPostExecute(result: String?) {
            super.onPostExecute(result)
            handleJson(result)
        }

        private fun handleJson(jsonString: String?) {
            val jsonArray= JSONArray(jsonString)
            val list=ArrayList<Address_data>()
            var x=0
            while(x<jsonArray.length()){
                val jsonObject=jsonArray.getJSONObject(x)
                list.add(
                    Address_data(
                        jsonObject.getString("tag1"),
                        jsonObject.getString("tag2"),
                        jsonObject.getString("tag3"),
                        jsonObject.getString("tag4")
                    )
                )
                x++
            }
            val adapter=MW_Adapter_list(requireActivity(),list)
            data_list.adapter=adapter
        }

    }

}

класс данных

package com.example.test.mainF

data class Address_data(val address : String, val bunji :String , val streeetAddress :String, val updateAt:String)

MW_adapter_list

package com.example.rsquare_android_fixed.mywork.building


import android.app.Activity
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.BaseAdapter
import androidx.appcompat.widget.AppCompatTextView
import androidx.fragment.app.FragmentActivity
import com.example.rsquare_android_fixed.R
import com.example.test.mainF.Address_data

class MW_Adapter_list(val context: FragmentActivity, val list : ArrayList<Address_data>):BaseAdapter(){
    override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
        val view:View= LayoutInflater.from(context).inflate(R.layout.db_list,parent,false)

        val val_addr = view.findViewById(R.id.db_addr) as AppCompatTextView
        val val_street = view.findViewById(R.id.db_street) as AppCompatTextView
        val val_update = view.findViewById(R.id.db_update) as AppCompatTextView

        val_addr.text=list[position].address.toString()+list[position].bunji.toString()
        val_street.text=list[position].streeetAddress.toString()
        val_update.text=list[position].updateAt.toString()

        return view
    }
    override fun getItem(position: Int): Any {
        return list[position]
    }
    override fun getItemId(position: Int): Long {
        return position.toLong()
    }
    override fun getCount(): Int {
        return list.size
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...