я создал список, в котором хранится значение из 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
}
}