· 6 years ago · Nov 06, 2019, 06:28 PM
1activity_main.xml
2==========================
3<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
4 android:layout_width="match_parent"
5 android:layout_height="match_parent"
6 android:orientation="vertical">
7
8 <Button
9 android:id="@+id/btnAddUser"
10 android:layout_width="match_parent"
11 android:layout_height="wrap_content"
12 android:background="#009fff"
13 android:text="Add User"
14 android:textColor="#fff"
15 android:textSize="32sp" />
16
17 <LinearLayout
18 android:layout_width="match_parent"
19 android:layout_height="wrap_content"
20 android:orientation="horizontal">
21 <EditText
22 android:layout_width="match_parent"
23 android:layout_height="wrap_content"
24 android:layout_weight="1"
25 android:id="@+id/myMask"
26 android:hint="name to delete"
27 android:textSize="32sp"/>
28 <Button
29 android:layout_width="match_parent"
30 android:layout_height="wrap_content"
31 android:layout_weight="2"
32 android:id="@+id/btnDelMask"
33 android:background="#FC3F3F"
34 android:text="del"
35 android:textSize="32sp"
36 android:textColor="#fff"/>
37 </LinearLayout>
38
39 <ListView
40 android:id="@+id/myUsers"
41 android:layout_width="match_parent"
42 android:layout_height="match_parent" />
43</LinearLayout>
44
45
46
47
48MainActivity.Java
49===========================
50import androidx.appcompat.app.AlertDialog;
51import androidx.appcompat.app.AppCompatActivity;
52
53import android.content.Context;
54import android.content.DialogInterface;
55import android.content.Intent;
56import android.os.Bundle;
57import android.util.Log;
58import android.view.View;
59import android.widget.AdapterView;
60import android.widget.EditText;
61import android.widget.ListView;
62import android.widget.TextView;
63import android.widget.Toast;
64
65import com.sdsmdg.tastytoast.TastyToast;
66
67public class MainActivity extends AppCompatActivity {
68 ListView myUsers;
69 Context context;
70 MySQLite mySQLite;
71 EditText myMask;
72
73 @Override
74 protected void onCreate(Bundle savedInstanceState) {
75 super.onCreate(savedInstanceState);
76 setContentView(R.layout.activity_main);
77 setPointer();
78 }
79
80 private void setPointer() {
81 this.context=this;
82 mySQLite = new MySQLite(this);
83 myMask = findViewById(R.id.myMask);
84 myUsers = findViewById(R.id.myUsers);
85 getData();
86 findViewById(R.id.btnAddUser).setOnClickListener(new View.OnClickListener() {
87 @Override
88 public void onClick(View v) {
89 makeUser();
90 }
91 });
92 myUsers.setOnItemClickListener(new AdapterView.OnItemClickListener() {
93 @Override
94 public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
95 TextView itemUserName = (TextView)view;
96 String deleteUser = itemUserName.getText().toString();
97 askForDelete (deleteUser,false);
98 //mySQLite.deleteUser(((TextView)view).getText().toString());
99 getData();
100 }
101 });
102 findViewById(R.id.btnDelMask).setOnClickListener(new View.OnClickListener() {
103 @Override
104 public void onClick(View v) {
105 // %mais - transmais
106 // %mais% - elian and mais, mais nudnikit, all you need is mais, give her a chance
107 // main% - elian and mais, mais is annoying
108 String deleteUser = myMask.getText().toString(); // '%mais%'
109 askForDelete (deleteUser,true);
110 myMask.setText("");
111 }
112 });
113 }
114
115 private void askForDelete(final String deleteUser, final boolean isMask) {
116 AlertDialog.Builder askForDelete = new AlertDialog.Builder(context);
117 askForDelete.setTitle("DELETE USER");
118 askForDelete.setMessage("Are you sure to delete:\n"+deleteUser);
119 askForDelete.setPositiveButton("YES", new DialogInterface.OnClickListener() {
120 @Override
121 public void onClick(DialogInterface dialog, int which) {
122 mySQLite.deleteUser(deleteUser, isMask);
123 getData();
124 dialog.dismiss();
125 }
126 });
127 askForDelete.setNegativeButton("NOOOOOOO", new DialogInterface.OnClickListener() {
128 @Override
129 public void onClick(DialogInterface dialog, int which) {
130 dialog.dismiss();
131 }
132 });
133 askForDelete.show();
134 }
135
136 private void getData() {
137 UserAdapter adapter = new UserAdapter(context,mySQLite.getUsers());
138 myUsers.setAdapter(adapter);
139 }
140
141 private void makeUser() {
142 AlertDialog.Builder builder = new AlertDialog.Builder(context);
143 builder.setTitle("Add new user");
144 final EditText userName = new EditText(context);
145 userName.setHint("enter a new user name");
146 builder.setView(userName);
147 builder.setPositiveButton("Add", new DialogInterface.OnClickListener() {
148 @Override
149 public void onClick(DialogInterface dialog, int which) {
150 if (userName.getText().toString().isEmpty()) {return;}
151 createSQLuser(userName.getText().toString());
152 dialog.dismiss();
153 }
154 });
155 builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
156 @Override
157 public void onClick(DialogInterface dialog, int which) {
158 dialog.dismiss();
159 }
160 });
161 builder.show();
162 }
163
164 private void createSQLuser(String newUser) {
165 if (mySQLite.createUser(newUser, "1234")) {
166 Log.e("SQL", "createSQLuser: OK" );
167 getData();
168 } else{
169 //Toast.makeText(context, "Error", Toast.LENGTH_LONG).show();
170 TastyToast.makeText(context,"Mais wrote this app?",TastyToast.LENGTH_LONG,TastyToast.CONFUSING).show();
171 }
172 }
173}
174
175
176
177UserAdapter.java
178============================
179package com.wtf.sqlworking;
180
181import android.content.Context;
182import android.view.View;
183import android.view.ViewGroup;
184import android.widget.BaseAdapter;
185import android.widget.TextView;
186
187import java.util.List;
188
189public class UserAdapter extends BaseAdapter {
190 Context context;
191 List<String> usersNames;
192
193 public UserAdapter(Context context, List<String> usersNames) {
194 this.context = context;
195 this.usersNames = usersNames;
196 }
197
198 @Override
199 public int getCount() {
200 return usersNames.size();
201 }
202
203 @Override
204 public Object getItem(int position) {
205 return null;
206 }
207
208 @Override
209 public long getItemId(int position) {
210 return 0;
211 }
212
213 @Override
214 public View getView(int position, View convertView, ViewGroup parent) {
215 TextView uName = new TextView(context);
216 uName.setText(this.usersNames.get(position));
217 uName.setTextSize(42);
218 return uName;
219 }
220}
221
222
223
224MySqlite.java
225================
226package com.wtf.sqlworking;
227
228import android.content.ContentValues;
229import android.content.Context;
230import android.database.Cursor;
231import android.database.sqlite.SQLiteDatabase;
232import android.database.sqlite.SQLiteOpenHelper;
233
234import java.util.ArrayList;
235import java.util.List;
236
237public class MySQLite extends SQLiteOpenHelper {
238 Context context;
239 final static String DB_NAME="myHouse.db";
240 final static String TABLE_NAME="users";
241 SQLiteDatabase myDB;
242
243 public MySQLite(Context context){
244 super(context,DB_NAME,null,1);
245 this.context=context;
246 myDB=this.getWritableDatabase();
247 }
248
249 @Override
250 public void onCreate(SQLiteDatabase db) {
251 String sqlStament = "CREATE TABLE IF NOT EXISTS "+TABLE_NAME+" ";
252 sqlStament+="(id INTEGER PRIMARY KEY AUTOINCREMENT, userName TEXT UNIQUE, userPass TEXT)";
253 db.execSQL(sqlStament);
254 }
255
256 @Override
257 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
258 //do not touch, be ware it can delete the table from the data base.
259 }
260
261 public boolean createUser(String userName, String userPass){
262 ContentValues contentValues = new ContentValues();
263 //insert data by key and value
264 contentValues.put("userName",userName);
265 contentValues.put("userPass", userPass);
266 //put our values into table a getting a result of row id
267 //if the result if -1, we have an error
268 long res= myDB.insert(TABLE_NAME,null,contentValues);
269 //check if we have en error
270 return res!=(-1);
271 }
272
273 public List<String> getUsers(){
274 //create an empty list
275 List<String> myList = new ArrayList<>();
276 //using Cursor to hold our raw (Cursor is colleciton type object)
277 Cursor res= myDB.rawQuery("SELECT * FROM users",null);
278 if (res.moveToFirst()){
279 do{
280 String item = res.getString(res.getColumnIndex("userName"));
281 myList.add(item);
282 } while (res.moveToNext());
283 }
284 return myList;
285 }
286
287 public void deleteUser(String userName,Boolean isMask){
288 if (isMask){
289 myDB.execSQL("DELETE FROM users WHERE userName LIKE '%" + userName + "%'");
290 } else {
291 myDB.execSQL("DELETE FROM users WHERE userName='" + userName + "'");
292 }
293 }
294}
295
296
297
298Gradle(app) -> dependencies
299================================
300 //external library for nicer toast
301 implementation 'com.sdsmdg.tastytoast:tastytoast:0.1.1'