2017-12-30 37 views
0

어댑터가있는 조각이 있습니다. 내가 왜 널 점점 onResponse에서이 어댑터 변수에 웹가변 값은 갱신시 null이됩니다.

내 frangment

class MyTransactionFragment : Fragment() { 
    val disposable = CompositeDisposable() 
    var transactionDetailList:ArrayList<TransactionData>? = null 
    private var mApiSocket: ApiSocket? = null 
    private var mRecyclerView:RecyclerView? = null 
    var adapter:TransactionAdapter? = null 
    companion object { 
     val TAG = ItemFragment::class.java.simpleName!! 
     fun newInstance(transactionPojo: TransactionPojo): MyTransactionFragment { 
      val fragment = MyTransactionFragment() 
      val args = Bundle() 
      args.putSerializable(Constants.TRANSACTIONS, transactionPojo) 
      fragment.arguments = args 
      return fragment 
     } 
    } 
    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, 
           savedInstanceState: Bundle?): View? { 
     val view = inflater.inflate(R.layout.fragment_my_transaction, container, false) 
     mApiSocket = Utils().getApiSocket(activity!!) 
     val layoutManager = LinearLayoutManager(activity, LinearLayoutManager.VERTICAL, false) 
     view.mRecyclerViewTransaction.layoutManager = layoutManager 
     view.mRecyclerViewTransaction.setHasFixedSize(true) 
     if (arguments!=null && arguments!!.getSerializable(Constants.TRANSACTIONS) != null){ 
      val transactionPojo = arguments!!.getSerializable(Constants.TRANSACTIONS) as TransactionPojo 
      transactionDetailList = ArrayList(transactionPojo.transactions.data) 
      adapter = TransactionAdapter(transactionDetailList, activity!!,disposable) 
      view.mRecyclerViewTransaction.adapter = adapter 
      mRecyclerView = view.mRecyclerViewTransaction 
      val scrollListener = object : EndlessRecyclerViewScrollListener(layoutManager) { 
       override fun onLoadMore(page: Int, totalItemsCount: Int, view: RecyclerView) { 
        disposable.add(mApiSocket!!.transaction(""+page+1) 
          .subscribeOn(Schedulers.newThread()) 
          .observeOn(AndroidSchedulers.mainThread()) 
          .subscribe(MyTransactionFragment()::onResponse,MyTransactionFragment()::onError)) 
       } 
      } 
      view.mRecyclerViewTransaction.addOnScrollListener(scrollListener) 
     } 
     return view 
    } 

    private fun onResponse(transactionPojo: TransactionPojo){ 
     transactionDetailList = ArrayList(transactionPojo.transactions.data) 
     adapter!!.addData(transactionDetailList) //here adapter variable gets null Why 
    } 

    fun onError(e: Throwable) { 
     Log.e("TransactionFragment", e.toString()) 
     if (e is NoNetWorkException) { 
      Utils().showSnackBar(activity!!, "No Network connection") 
     } else 
      Utils().showSnackBar(activity!!, "Something went wrong please try again later") 
     Utils().hideProgress() 
    } 

    override fun onDetach() { 
     super.onDetach() 
     disposable.dispose() 
    } 

} 

에서 데이터를 가져 오기 위해 개조를 사용하고?

+0

으로 변경 했습니까? 의도 한 논리 흐름을 설명 할 수 있습니까? – Remario

+0

내 조각의 oncreatevew에 어댑터를 설정합니다. 나는 또한 그 방법에서 네트워크 기능을 호출하고있다. 응답은 조각 –

+0

에 도착하고 있습니다. 타격 한 엔드 포인트가 실제로 디버깅을했는지 확인합니다. – Remario

답변

0

마지막으로 나는

사실 내가 가입자의 MyTransactionFragment()::onResponse를 호출하고 발견했다. 이는 결과를 MyTransactionFragment의 새 인스턴스에 넣는 것을 의미합니다. 그래서 이것을

disposable.add(mApiSocket!!.transaction(""+page+1) 
          .subscribeOn(Schedulers.newThread()) 
          .observeOn(AndroidSchedulers.mainThread()) 
          .subscribe(::onResponse,::onError))