/
SavedAadhaarCardActivity.java
138 lines (112 loc) · 4.53 KB
/
SavedAadhaarCardActivity.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
package com.rajdeol.aadhaarreader;
import android.content.Intent;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import com.rajdeol.aadhaarreader.utils.CardListAdapter;
import com.rajdeol.aadhaarreader.utils.DataAttributes;
import com.rajdeol.aadhaarreader.utils.Storage;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
public class SavedAadhaarCardActivity extends AppCompatActivity {
private ListView lv_saved_card_list;
private TextView tv_no_saved_card;
private Storage storage;
private JSONArray storageDataArray;
private ArrayList<JSONObject> cardDataList;
@Override
protected void onCreate(Bundle savedInstanceState) {
//hide the default action bar
getSupportActionBar().hide();
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_saved_aadhaar_card);
//init UI elements
tv_no_saved_card = (TextView)findViewById(R.id.tv_no_saved_card);
lv_saved_card_list = (ListView)findViewById(R.id.lv_saved_card_list);
// init storage
storage = new Storage(this);
// read data from storage
String storageData = storage.readFromFile();
//check if file is not empty
if(storageData.length() > 0){
try {
// convert JSON string to array
storageDataArray = new JSONArray(storageData);
// handle case of empty JSONArray after delete
if(storageDataArray.length()<1){
// hide list and show message
tv_no_saved_card.setVisibility(View.VISIBLE);
lv_saved_card_list.setVisibility(View.GONE);
//exit
return;
}
// init data list
cardDataList = new <JSONObject>ArrayList();
//prepare the data list for list adapter
for(int i = 0; i<storageDataArray.length();i++){
JSONObject dataObject = storageDataArray.getJSONObject(i);
cardDataList.add(dataObject);
}
// create List Adapter with data
ArrayAdapter<ArrayList> savedCardListAdapter = new CardListAdapter(this,cardDataList);
// populate list
lv_saved_card_list.setAdapter(savedCardListAdapter);
}catch (JSONException e){
e.printStackTrace();
}
}else{
// hide list and show message
tv_no_saved_card.setVisibility(View.VISIBLE);
lv_saved_card_list.setVisibility(View.GONE);
}
}
/**
* delete saved aadhaar card
* @param uid
*/
public void deleteCard(String uid){
// read data from storage
String storageData = storage.readFromFile();
JSONArray storageDataArray;
//check if file is empty
if(storageData.length() > 0){
try {
storageDataArray = new JSONArray(storageData);
// coz I am working on Android version which doesnot support remove method on JSONArray
JSONArray updatedStorageDataArray = new JSONArray();
// check if data already exists
for(int i = 0; i<storageDataArray.length();i++){
String dataUid = storageDataArray.getJSONObject(i).getString(DataAttributes.AADHAR_UID_ATTR);
if(!uid.equals(dataUid)){
updatedStorageDataArray.put(storageDataArray.getJSONObject(i));
}
}
// save the updated list
storage.writeToFile(updatedStorageDataArray.toString());
// Hide the list if all cards are deleted
if(updatedStorageDataArray.length() < 1){
// hide list and show message
tv_no_saved_card.setVisibility(View.VISIBLE);
lv_saved_card_list.setVisibility(View.GONE);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}
/**
* Start Home Activity
* @param view
*/
public void showHome(View view){
// intent for HomeActivity
Intent intent = new Intent(this,HomeActivity.class);
// Start Activity
startActivity(intent);
}
}//EO class