我正在使用JSoup来解析一个网站(我不得不将其设置为使用明文请求,因为不支持HTTPS).它是在Runnable
,以避免阻塞网络主线程.但是,当我运行我的代码时,它似乎不显示.我怀疑它与activity
有关(因为我在设置它时遇到了问题),并且我使用的是内部类,但没有返回任何错误或警告.我做错了什么?
package com.example.investmenthuntermobile
import android.os.Bundle
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TableRow
import android.widget.TextView
import androidx.fragment.app.Fragment
import com.example.investmenthuntermobile.databinding.InsiderFragmentBinding
import org.jsoup.Jsoup
class InsiderFragment : Fragment() {
private lateinit var binding: InsiderFragmentBinding
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View {
binding = InsiderFragmentBinding.inflate(layoutInflater)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
setupData()
}
private fun setupData() {
val thread = Thread(Task()).start()
}
inner class Task() : Runnable {
override fun run() {
val doc = Jsoup.connect("http://openinsider.com/search?q=GME").get()
val table = doc.select(".tinytable")
// Get the table header cells
val tableHeaderRow = TableRow(activity)
tableHeaderRow.isClickable = true
table.select("thead").select("tr").forEach {row ->
row.getElementsByTag("th").forEach { cell ->
Log.d("CELL text", cell.text())
val textView = TextView(activity)
textView.text = cell.text()
tableHeaderRow.addView(textView)
}
}
// Get the table body cells
table.select("tbody").select("tr").forEach {row ->
val tableRow = TableRow(requireActivity())
tableRow.isClickable = true
row.getElementsByTag("td").forEach { cell ->
val textView = TextView(activity)
textView.text = cell.text()
tableRow.addView(textView)
}
}
}
}
}