Browse Source

List transactions

connman
adityapk00 6 years ago
parent
commit
131c2b8f35
  1. 11
      app/src/main/java/com/adityapk/zcash/zqwandroid/DataModel.kt
  2. 15
      app/src/main/java/com/adityapk/zcash/zqwandroid/MainActivity.kt
  3. 28
      app/src/main/java/com/adityapk/zcash/zqwandroid/TransactionItemFragment.kt
  4. 7
      app/src/main/res/layout/fragment_transaction_item.xml

11
app/src/main/java/com/adityapk/zcash/zqwandroid/DataModel.kt

@ -6,17 +6,22 @@ import com.beust.klaxon.Parser
object DataModel {
class MainResponse(val balance: Double, val saplingAddress: String, val zecprice: Double)
class TransactionItem(val type: String, val datetime: Long, val amount: String)
var mainResponseData : MainResponse? = null
var transactions : List<JsonObject> ?= null
var transactions : List<TransactionItem> ?= null
fun parseResponse(response: String) {
val json = Parser.default().parse(StringBuilder(response)) as JsonObject
when (json.string("command")) {
"getInfo" -> mainResponseData = Klaxon().parse<MainResponse>(response)
"getTransactions" -> {
transactions = json.array("transactions")
transactions = json.array<JsonObject>("transactions").orEmpty().map { tx ->
TransactionItem(
tx.string("type") ?: "",
tx.long("datetime") ?: 0,
tx.string("amount") ?: "0")
}
}
}
}

15
app/src/main/java/com/adityapk/zcash/zqwandroid/MainActivity.kt

@ -9,6 +9,7 @@ import android.util.Log
import android.view.Menu
import android.view.MenuItem
import android.widget.Toast
import com.beust.klaxon.Klaxon
import com.beust.klaxon.json
import kotlinx.android.synthetic.main.activity_main.*
import kotlinx.android.synthetic.main.content_main.*
@ -19,7 +20,7 @@ import java.text.DecimalFormat
import java.util.*
class MainActivity : AppCompatActivity(), TransactionItem.OnFragmentInteractionListener {
class MainActivity : AppCompatActivity(), TransactionItemFragment.OnFragmentInteractionListener {
override fun onFragmentInteraction(uri: Uri) {
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
}
@ -110,14 +111,18 @@ class MainActivity : AppCompatActivity(), TransactionItem.OnFragmentInteractionL
balanceSmall.text = balText.substring(balText.length - 4, balText.length)
balanceUSD.text = "$ " + DecimalFormat("#.##").format(bal * zPrice)
txList.removeAllViewsInLayout()
val fragTx = supportFragmentManager.beginTransaction()
var oddeven = "odd"
for (tx in DataModel.transactions.orEmpty()) {
val dt = DateFormat.getDateInstance().format(Date((tx.long("datetime") ?: 0) * 1000))
supportFragmentManager.beginTransaction().add(
fragTx.add(
txList.id ,
TransactionItem.newInstance(dt, "even"),
TransactionItemFragment.newInstance(Klaxon().toJsonString(tx), oddeven),
"tag1"
).commit()
)
oddeven = if (oddeven == "odd") "even" else "odd"
}
fragTx.commit()
}
}

28
app/src/main/java/com/adityapk/zcash/zqwandroid/TransactionItem.kt → app/src/main/java/com/adityapk/zcash/zqwandroid/TransactionItemFragment.kt

@ -10,6 +10,10 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import com.beust.klaxon.Klaxon
import kotlinx.android.synthetic.main.fragment_transaction_item.*
import java.text.DateFormat
import java.util.*
// TODO: Rename parameter arguments, choose names that match
@ -20,27 +24,27 @@ private const val ARG_PARAM2 = "param2"
/**
* A simple [Fragment] subclass.
* Activities that contain this fragment must implement the
* [TransactionItem.OnFragmentInteractionListener] interface
* [TransactionItemFragment.OnFragmentInteractionListener] interface
* to handle interaction events.
* Use the [TransactionItem.newInstance] factory method to
* Use the [TransactionItemFragment.newInstance] factory method to
* create an instance of this fragment.
*
*/
class TransactionItem : Fragment() {
class TransactionItemFragment : Fragment() {
// TODO: Rename and change types of parameters
private var param1: String? = null
private var param2: String? = null
private var tx: DataModel.TransactionItem? = null
private var listener: OnFragmentInteractionListener? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
arguments?.let {
param1 = it.getString(ARG_PARAM1)
tx = Klaxon().parse(it.getString(ARG_PARAM1))
param2 = it.getString(ARG_PARAM2)
}
}
@SuppressLint("SetTextI18n")
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
@ -49,10 +53,14 @@ class TransactionItem : Fragment() {
val view = inflater.inflate(R.layout.fragment_transaction_item, container, false)
val txt = view.findViewById<TextView>(R.id.txdate)
txt.text = param1
txt.text = DateFormat.getDateInstance().format(Date((tx?.datetime ?: 0 )* 1000))
val amt = view.findViewById<TextView>(R.id.txamt)
amt.text = (if (tx?.type == "send") "" else "+") + tx?.amount
if (param2 == "odd")
view.findViewById<ConstraintLayout>(R.id.outlineLayout).background = null
return view;
return view
}
// TODO: Rename method, update argument and hook method into UI event
@ -97,13 +105,13 @@ class TransactionItem : Fragment() {
*
* @param param1 Parameter 1.
* @param param2 Parameter 2.
* @return A new instance of fragment TransactionItem.
* @return A new instance of fragment TransactionItemFragment.
*/
// TODO: Rename and change types and number of parameters
@SuppressLint("SetTextI18n")
@JvmStatic
fun newInstance(param1: String, param2: String) =
TransactionItem().apply {
TransactionItemFragment().apply {
arguments = Bundle().apply {
putString(ARG_PARAM1, param1)
putString(ARG_PARAM2, param2)

7
app/src/main/res/layout/fragment_transaction_item.xml

@ -4,7 +4,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:context=".TransactionItem" android:id="@+id/outlineLayout"
tools:context=".TransactionItemFragment" android:id="@+id/outlineLayout"
android:background="@color/light_grey">
<!-- TODO: Update blank fragment layout -->
@ -20,13 +20,14 @@
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="@string/hello_blank_fragment" android:id="@+id/txdate"
android:text="Date" android:id="@+id/txdate"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintLeft_toRightOf="@+id/imageView5"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@+id/imageView5" android:layout_marginStart="16dp"
android:layout_marginTop="8dp" android:layout_marginBottom="8dp"
app:layout_constraintEnd_toStartOf="@+id/txamt" android:layout_marginEnd="7dp"/>
app:layout_constraintEnd_toStartOf="@+id/txamt" android:layout_marginEnd="7dp"
/>
<TextView
android:text="Amt"
android:layout_width="0dp"

Loading…
Cancel
Save