Kotlin “回收器”视图中的项目在更改为其他活动后消失,然后再次返回
这是一个非常新手的程序员,但不是一个好的英文打字机。我正在尝试使用PurchaseHistoryResponseListener为之前购买的商品创建一个检查程序。当检查者发现一些东西时,它会添加到一个列表中,然后向recyclerview_MYBook提供这些数据。问题是,当启动应用程序时,数据完全通过recyclerview_MYBook流动,但当移动到不同的活动并通过不同的方法(按钮单击)返回到以前的活动时,recyclerview_MYBook上的数据不会显示,只会通过传统的后退按钮显示,此时将显示recyclerview上的数据。下面是我的noob代码 类MainActivity:AppCompatActivity(),PurchasesUpdatedListener{Kotlin “回收器”视图中的项目在更改为其他活动后消失,然后再次返回,kotlin,android-recyclerview,billing,in-app-purchase-receipt,Kotlin,Android Recyclerview,Billing,In App Purchase Receipt,这是一个非常新手的程序员,但不是一个好的英文打字机。我正在尝试使用PurchaseHistoryResponseListener为之前购买的商品创建一个检查程序。当检查者发现一些东西时,它会添加到一个列表中,然后向recyclerview_MYBook提供这些数据。问题是,当启动应用程序时,数据完全通过recyclerview_MYBook流动,但当移动到不同的活动并通过不同的方法(按钮单击)返回到以前的活动时,recyclerview_MYBook上的数据不会显示,只会通过传统的后退按钮显示,
private lateinit var billingClient: BillingClient
private lateinit var blogadapternew: BlogRecyclerAdapterNew
private lateinit var blogadapterpremium: BlogRecyclerAdapterPremium
private lateinit var blogadapterfree: BlogRecyclerAdapterFree
private lateinit var blogadaptermybook: BlogRecyclerAdapterMyBook
private lateinit var auth: FirebaseAuth
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
auth = FirebaseAuth.getInstance()
//FirebaseAuth.getInstance().signOut()
window.setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE)
window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN)
setContentView(R.layout.activity_main)
recycler_viewNew.layoutManager = LinearLayoutManager(this, RecyclerView.HORIZONTAL,false)
recycler_viewNew.adapter= BlogRecyclerAdapterNew()
recycler_viewPremium.layoutManager = LinearLayoutManager(this,RecyclerView.HORIZONTAL,false)
recycler_viewPremium.adapter= BlogRecyclerAdapterPremium()
recycler_viewFree.layoutManager = LinearLayoutManager(this,RecyclerView.HORIZONTAL,false)
recycler_viewFree.adapter= BlogRecyclerAdapterFree()
recycler_viewMyBook.layoutManager = LinearLayoutManager(this,RecyclerView.HORIZONTAL,false)
recycler_viewMyBook.adapter= BlogRecyclerAdapterMyBook()
if (supportActionBar != null)
supportActionBar?.hide()
setupBillingClient()
initrecyclerView()
initrecyclerViewPremium()
initrecyclerViewFree()
initrecyclerViewMyBook()
addDataSetNew()
addDataSetPremium()
addDataSetFree()
Logo.setOnClickListener{
val intent = Intent(MonstaLogo.context, MainActivity::class.java)
MonstaLogo.context.startActivity(intent)
}
MainFeaturedButton.setOnClickListener {
val intent = Intent(MainFeaturedButton.context, MainActivity::class.java)
MainFeaturedButton.context.startActivity(intent)
}
MainNewButton.setOnClickListener {
val intent = Intent(MainNewButton.context, NewActivity::class.java)
MainNewButton.context.startActivity(intent)
}
NewMore.setOnClickListener{
val intent = Intent(NewMore.context, NewActivity::class.java)
NewMore.context.startActivity(intent)
}
MainPremiumButton.setOnClickListener {
val intent = Intent(MainPremiumButton.context, PremiumActivity::class.java)
MainPremiumButton.context.startActivity(intent)
}
PremiumMore.setOnClickListener{
val intent = Intent(PremiumMore.context, PremiumActivity::class.java)
PremiumMore.context.startActivity(intent)
}
MainFreeButton.setOnClickListener {
val intent = Intent(MainFreeButton.context, FreeActivity::class.java)
MainFreeButton.context.startActivity(intent)
}
FreeMore.setOnClickListener {
val intent = Intent(FreeMore.context, FreeActivity::class.java)
FreeMore.context.startActivity(intent)
}
MainMyBookButton.setOnClickListener {
val intent = Intent(MainMyBookButton.context, MyBookActivity::class.java)
MainMyBookButton.context.startActivity(intent)
}
MyBookMore.setOnClickListener {
val intent = Intent(MyBookMore.context, MyBookActivity::class.java)
MyBookMore.context.startActivity(intent)
}
}
private fun setupBillingClient() {
billingClient = BillingClient.newBuilder(this)
.enablePendingPurchases()
.setListener(this)
.build()
billingClient.startConnection(object : BillingClientStateListener {
override fun onBillingSetupFinished(billingResult: BillingResult) {
if (billingResult.responseCode == BillingClient.BillingResponseCode.OK) {
// The BillingClient is ready. You can query purchases here.
println("Setup Billing Done")
PurchaseHistoryResponseListener()
}
}
override fun onBillingServiceDisconnected() {
// Try to restart the connection on the next request to
// Google Play by calling the startConnection() method.
println("Failed")
setupBillingClient()
println("Restart Connection")
}
})
}
override fun onPurchasesUpdated(
billingResult: BillingResult?,
purchases: MutableList<Purchase>?
) {
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
}
private fun PurchaseHistoryResponseListener (){
billingClient.queryPurchaseHistoryAsync(BillingClient.SkuType.INAPP) {
responseCode, result ->
// println("queryPurchasesAsync INAPP results: ${result?.size}")
// println("Getting Purchase History")
println("$result")
val dataMyBook1 = DataSourceMyBook.createDataSet()
if ("testcode1" in result.toString()) {
println("found it 1")
dataMyBook1.add((BlogPost( "BookName","Link","No")))
}
if ("testcode2" in result.toString()) {
println("found it 2")
dataMyBook1.add((BlogPost( "BookName","Link","No")))
}
if ("testcode3" in result.toString()) {
println("found it 3")
dataMyBook1.add((BlogPost( "BookName","Link","No")))
}
blogadaptermybook.submitList(dataMyBook1)
println(dataMyBook1)
}
}
private fun addDataSetNew(){
val dataNew = DataSourceNew.createDataSet()
blogadapternew.submitList(dataNew)
}
private fun addDataSetPremium(){
val dataPremium = DataSourcePremium.createDataSet()
blogadapterpremium.submitList(dataPremium)
}
private fun addDataSetFree(){
val dataFree = DataSourceFree.createDataSet()
blogadapterfree.submitList(dataFree)
}
/*private fun addDataSetMyBook(){
val dataMyBook1 = DataSourceMyBook.createDataSet()
blogadaptermybook.submitList(dataMyBook1)
}*/
/*private fun addDataSetMyBook(){
val dataMyBook1 = DataSourceMyBook.createDataSet()
billingClient.queryPurchaseHistoryAsync(BillingClient.SkuType.INAPP) {
responseCode, result ->
println("$result")
if ("bbbg_s2_c1_testcode1" in result.toString()){
dataMyBook1.add((BlogPost( "Mini Comic 1","Link","No")))
}
if ("bbbg_s2_c1_testcode2" in result.toString()){
dataMyBook1.add((BlogPost( "Mini Comic 2","Link","No")))
}
if ("bbbg_s2_c1_testcode3" in result.toString()){
dataMyBook1.add((BlogPost( "Mini Comic 3","Link","No")))
}
blogadaptermybook.submitList(dataMyBook1)
}}*/
/*dataMyBook.add((BlogPost( "Mini Comic 1","Link","No")))
dataMyBook.add((BlogPost( "Mini Comic 1","Link","No")))
dataMyBook.add((BlogPost( "Mini Comic 1","Link","No")))*/
private fun initrecyclerView(){
recycler_viewNew.apply {
layoutManager = LinearLayoutManager(this@MainActivity,RecyclerView.HORIZONTAL,false)
val topSpacingItemDecoration = TopSpacingItemDecoration(padding = 30)
addItemDecoration(topSpacingItemDecoration)
blogadapternew = BlogRecyclerAdapterNew()
adapter = blogadapternew
}
}
private fun initrecyclerViewPremium(){
recycler_viewPremium.apply {
layoutManager = LinearLayoutManager(this@MainActivity,RecyclerView.HORIZONTAL,false)
val topSpacingItemDecoration = TopSpacingItemDecoration(padding = 30)
addItemDecoration(topSpacingItemDecoration)
blogadapterpremium = BlogRecyclerAdapterPremium()
adapter = blogadapterpremium
}
}
private fun initrecyclerViewFree(){
recycler_viewFree.apply {
layoutManager = LinearLayoutManager(this@MainActivity,RecyclerView.HORIZONTAL,false)
val topSpacingItemDecoration = TopSpacingItemDecoration(padding = 30)
addItemDecoration(topSpacingItemDecoration)
blogadapterfree = BlogRecyclerAdapterFree()
adapter = blogadapterfree
}
}
private fun initrecyclerViewMyBook(){
recycler_viewMyBook.apply {
layoutManager =
LinearLayoutManager(this@MainActivity, RecyclerView.HORIZONTAL, false)
val topSpacingItemDecoration = TopSpacingItemDecoration(padding = 30)
addItemDecoration(topSpacingItemDecoration)
blogadaptermybook = BlogRecyclerAdapterMyBook()
adapter = blogadaptermybook
}
}
public override fun onStart() {
super.onStart()
val currentUser = auth.currentUser
updateUI(currentUser)
}
private fun updateUI(currentUser: FirebaseUser?) {
if (currentUser != null) {
AccountSettingButton.setImageResource(R.drawable.profileicon)
}
}
private lateinit var billingClient:billingClient
私有lateinit var blogadapternew:BlogRecyclerAdapterNew
私有lateinit var blogadapterpremium:BlogRecyclerAdapterPremium
私有lateinit var blogadapterfree:BlogRecyclerAdapterFree
私有lateinit var blogadaptermybook:BlogRecyclerAdapterMyBook
私有lateinit var auth:FirebaseAuth
重写创建时的乐趣(savedInstanceState:Bundle?){
super.onCreate(savedInstanceState)
auth=FirebaseAuth.getInstance()
//FirebaseAuth.getInstance().signOut()
window.setFlags(WindowManager.LayoutParams.FLAG\u SECURE,WindowManager.LayoutParams.FLAG\u SECURE)
window.setFlags(WindowManager.LayoutParams.FLAG_全屏,WindowManager.LayoutParams.FLAG_全屏)
setContentView(R.layout.activity_main)
recycler\u viewNew.layoutManager=LinearLayoutManager(此,RecyclerView.HORIZONTAL,false)
recycler_viewNew.adapter=BlogRecyclerAdapterNew()
recycler\u viewPremium.layoutManager=LinearLayoutManager(此,RecyclerView.HORIZONTAL,false)
recycler_viewPremium.adapter=BlogRecyclerAdapterEmperium()
recycler_viewFree.layoutManager=LinearLayoutManager(此,RecyclerView.HORIZONTAL,false)
recycler_viewFree.adapter=BlogRecyclerAdapterFree()
recycler\u viewMyBook.layoutManager=LinearLayoutManager(此,RecyclerView.HORIZONTAL,false)
recycler\u viewMyBook.adapter=BlogRecyclerAdapterMyBook()
如果(supportActionBar!=null)
supportActionBar?.hide()
setupBillingClient()
initrecyclerView()
initRecycleServicewPremium()
initRecycleServiceWFree()
initRecycleServiceWmyBook()
addDataSetNew()
addDataSetPremium()
addDataSetFree()
Logo.setOnClickListener{
val intent=intent(MonstaLogo.context,MainActivity::class.java)
MonstaLogo.context.startActivity(intent)
}
MainFeaturedButton.setOnClickListener{
val intent=intent(MainFeaturedButton.context,MainActivity::class.java)
MainFeaturedButton.context.startActivity(intent)
}
MainNewButton.setOnClickListener{
val intent=intent(MainNewButton.context,NewActivity::class.java)
MainNewButton.context.startActivity(意图)
}
NewMore.setOnClickListener{
val intent=intent(NewMore.context,NewActivity::class.java)
NewMore.context.startActivity(intent)
}
MainPremiumButton.setOnClickListener{
val intent=intent(MainPremiumButton.context,PremiumActivity::class.java)
MainPremiumButton.context.startActivity(intent)
}
PremiumMore.setOnClickListener{
val intent=intent(PremiumMore.context,PremiumActivity::class.java)
PremiumMore.context.startActivity(意图)
}
MainFreeButton.setOnClickListener{
val intent=intent(MainFreeButton.context,FreeActivity::class.java)
MainFreeButton.context.startActivity(意图)
}
FreeMore.setOnClickListener{
val intent=intent(FreeMore.context,FreeActivity::class.java)
FreeMore.context.startActivity(intent)
}
MainMyBookButton.setOnClickListener{
val intent=intent(MainMyBookButton.context,MyBookActivity::class.java)
MainMyBookButton.context.startActivity(intent)
}
MyBookMore.setOnClickListener{
val intent=intent(MyBookMore.context,MyBookActivity::class.java)
MyBookMore.context.startActivity(intent)
}
}
私人娱乐设置BillingClient(){
billingClient=billingClient.newBuilder(此)
.enablePendingPurchases()
.setListener(此)
.build()
billingClient.startConnection(对象:BillingClientStateListener{
覆盖功能onBillingSetupFinished(billingResult:billingResult){
if(billingResult.responseCode==BillingClient.BillingResponseCode.OK){
//BillingClient已准备就绪。您可以在此查询购买情况。
println(“设置计费完成”)
PurchaseHistoryResponseListener()
}
}
覆盖onBillingServiceDisconnected(){
//尝试在下一次请求时重新启动连接以
//Google通过调用startConnection()方法播放。
println(“失败”)
setupBillingClient()
println(“重新启动连接”)
}
})
}
在购买时覆盖乐趣(
比林格勒:比林格勒?,
购买:可变列表?
) {
TODO(“未实现”)//要更改已创建函数的主体,请使用文件|设置|文件模板。
}
私人娱乐购买历史响应侦听器(){
billingClient.queryPurchaseHistoryAsync(billingClient.SkuType.INAPP){
响应代码,结果->
//println(“queryPurchasesAsync INAPP results:${result?.size}”)
//println(“获取购买历史记录”)
println($result)
val dataMyBook1=DataSourceMyBook.createDataSet()
if(result.toString()中的“testcode1”){
println(“找到它1”)
dataMyBook1.add((BlogPost(“BookName”、“Link”、“No”))
}
if(result.toString()中的“testcode2”){
println(“找到它2”)
dataMyBook1.add((BlogPost(“BookName”、“Link”、“No”))
private var items: List<BlogPost> = ArrayList()
private var items2: List<BlogPost> = ArrayList()
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
return BlogViewHolder(
LayoutInflater.from(parent.context).inflate(
R.layout.layout_blog_list_item_mybook,
parent,
false
)
)
}
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
when (holder) {
is BlogViewHolder -> {
holder.bind(items.get(position))
holder.bind(items2.get(position))
}
}
}
override fun getItemCount(): Int {
return items.size
}
fun submitList(bloglist: List<BlogPost>) {
items = bloglist
items2 = bloglist
}
class BlogViewHolder constructor(itemView: View) : RecyclerView.ViewHolder(itemView) {
val blogImage: ImageButton = itemView.blog_imagemybook
val blogTitle: TextView = itemView.blog_titlemybook
val premiumImage: ImageView = itemView.premiumicon
fun bind(blogPost: BlogPost) {
blogTitle.setText(blogPost.title)
val requestOptions = RequestOptions()
.placeholder(R.drawable.mocksplash)
.error(R.drawable.disconnect)
Glide.with(itemView.blog_imagemybook)
.applyDefaultRequestOptions(requestOptions)
.load(blogPost.image)
.into(blogImage)
blogImage.setOnClickListener {
Toast.makeText(blogImage.context, "<<Swipe left<<", Toast.LENGTH_SHORT).show()
val intent = Intent(blogTitle.context, ComicReadingActivity::class.java)
var KomikName = blogTitle.text.toString()
intent.putExtra("KomikName",Name)
blogImage.context.startActivity(intent)
}
}
}
companion object{
fun createDataSet(): ArrayList<BlogPost> {
val dataMyBook1 = ArrayList<BlogPost>()
return dataMyBook1
}
}