diff --git a/app/build.gradle.kts b/app/build.gradle.kts index df6e1c4..5f5488d 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -44,6 +44,8 @@ dependencies { implementation(libs.annotation) implementation(libs.lifecycle.livedata.ktx) implementation(libs.lifecycle.viewmodel.ktx) + implementation(libs.legacy.support.v4) + implementation(libs.recyclerview) testImplementation(libs.junit) androidTestImplementation(libs.ext.junit) androidTestImplementation(libs.espresso.core) diff --git a/app/src/main/java/com/example/komodohub/AdminActivity.java b/app/src/main/java/com/example/komodohub/AdminActivity.java index 5ef2139..d40b0d8 100644 --- a/app/src/main/java/com/example/komodohub/AdminActivity.java +++ b/app/src/main/java/com/example/komodohub/AdminActivity.java @@ -1,17 +1,28 @@ package com.example.komodohub; +import android.content.Context; import android.os.Bundle; import android.view.View; +import android.widget.ArrayAdapter; +import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; import androidx.activity.EdgeToEdge; import androidx.appcompat.app.AppCompatActivity; +import com.example.komodohub.database.DatabaseAdapter; +import com.example.komodohub.models.StableArrayAdapter; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + public class AdminActivity extends AppCompatActivity { private DatabaseAdapter dbAdapter; private TextView newCommunityName; + private ListView adminCommunityView; @Override protected void onCreate(Bundle savedInstanceState) { @@ -24,6 +35,9 @@ protected void onCreate(Bundle savedInstanceState) { setContentView(R.layout.activity_admin_page); newCommunityName = findViewById(R.id.createCommunityBox); + adminCommunityView = findViewById(R.id.adminCommunitiesView); + + reloadList(); } public void createNewCommunity(View view) @@ -34,6 +48,8 @@ public void createNewCommunity(View view) Toast t = Toast.makeText(this, "Successfully created new community", Toast.LENGTH_SHORT); t.show(); + + reloadList(); } catch (Exception e) { @@ -41,4 +57,18 @@ public void createNewCommunity(View view) t.show(); } } + + private void reloadList() + { + var communities = dbAdapter.getAllCommunities(); + + var list = new ArrayList(); + for (int i = 0; i < communities.size(); ++i) { + list.add(communities.get(i).Name); + } + final StableArrayAdapter adapter = new StableArrayAdapter(this, + android.R.layout.simple_list_item_1, list); + adminCommunityView.setAdapter(adapter); + } + } \ No newline at end of file diff --git a/app/src/main/java/com/example/komodohub/LoginActivity.java b/app/src/main/java/com/example/komodohub/LoginActivity.java index 6746429..3c39f29 100644 --- a/app/src/main/java/com/example/komodohub/LoginActivity.java +++ b/app/src/main/java/com/example/komodohub/LoginActivity.java @@ -2,31 +2,15 @@ import android.content.Intent; import android.os.Bundle; -import android.view.Menu; -import android.view.MenuItem; import android.view.View; -import android.widget.RadioButton; import android.widget.TextView; import android.widget.Toast; import androidx.activity.EdgeToEdge; import androidx.appcompat.app.AppCompatActivity; -import androidx.core.graphics.Insets; -import androidx.core.view.ViewCompat; -import androidx.core.view.WindowInsetsCompat; -import androidx.navigation.NavController; -import androidx.navigation.Navigation; -import androidx.navigation.ui.AppBarConfiguration; -import androidx.navigation.ui.NavigationUI; - -import com.example.komodohub.databinding.ActivityMainBinding; -import com.google.android.material.snackbar.Snackbar; - -import org.w3c.dom.Text; - -import java.nio.charset.StandardCharsets; -import java.security.MessageDigest; -import java.util.Base64; + +import com.example.komodohub.database.DatabaseAdapter; + import java.util.Objects; public class LoginActivity extends AppCompatActivity { diff --git a/app/src/main/java/com/example/komodohub/MenuActivity.java b/app/src/main/java/com/example/komodohub/MenuActivity.java index d0ee0fa..c27cc38 100644 --- a/app/src/main/java/com/example/komodohub/MenuActivity.java +++ b/app/src/main/java/com/example/komodohub/MenuActivity.java @@ -8,6 +8,8 @@ import androidx.activity.EdgeToEdge; import androidx.appcompat.app.AppCompatActivity; +import com.example.komodohub.database.DatabaseAdapter; + public class MenuActivity extends AppCompatActivity { private DatabaseAdapter dbAdapter; diff --git a/app/src/main/java/com/example/komodohub/ProfileActivity.java b/app/src/main/java/com/example/komodohub/ProfileActivity.java index c0c6d47..491b8ba 100644 --- a/app/src/main/java/com/example/komodohub/ProfileActivity.java +++ b/app/src/main/java/com/example/komodohub/ProfileActivity.java @@ -5,6 +5,8 @@ import androidx.activity.EdgeToEdge; import androidx.appcompat.app.AppCompatActivity; +import com.example.komodohub.database.DatabaseAdapter; + public class ProfileActivity extends AppCompatActivity { private DatabaseAdapter dbAdapter; diff --git a/app/src/main/java/com/example/komodohub/SearchActivity.java b/app/src/main/java/com/example/komodohub/SearchActivity.java index e1ebf6c..22a3d63 100644 --- a/app/src/main/java/com/example/komodohub/SearchActivity.java +++ b/app/src/main/java/com/example/komodohub/SearchActivity.java @@ -1,17 +1,14 @@ package com.example.komodohub; -import android.content.Intent; import android.os.Bundle; -import android.view.View; import android.widget.RadioButton; import android.widget.RadioGroup; import android.widget.TextView; -import android.widget.Toast; import androidx.activity.EdgeToEdge; import androidx.appcompat.app.AppCompatActivity; -import java.util.Objects; +import com.example.komodohub.database.DatabaseAdapter; public class SearchActivity extends AppCompatActivity { private DatabaseAdapter dbAdapter; diff --git a/app/src/main/java/com/example/komodohub/DatabaseAdapter.java b/app/src/main/java/com/example/komodohub/database/DatabaseAdapter.java similarity index 98% rename from app/src/main/java/com/example/komodohub/DatabaseAdapter.java rename to app/src/main/java/com/example/komodohub/database/DatabaseAdapter.java index 06c34ef..bbfdf38 100644 --- a/app/src/main/java/com/example/komodohub/DatabaseAdapter.java +++ b/app/src/main/java/com/example/komodohub/database/DatabaseAdapter.java @@ -1,4 +1,4 @@ -package com.example.komodohub; +package com.example.komodohub.database; import android.annotation.SuppressLint; import android.content.ContentValues; @@ -87,7 +87,7 @@ public ArrayList getAllCommunities() { SQLiteDatabase db = dbHelper.getWritableDatabase(); - Cursor c = db.rawQuery("SELECT * FROM Community", null); + Cursor c = db.rawQuery("SELECT * FROM Communities", null); c.moveToFirst(); ArrayList communities = new ArrayList<>(); diff --git a/app/src/main/java/com/example/komodohub/models/StableArrayAdapter.java b/app/src/main/java/com/example/komodohub/models/StableArrayAdapter.java new file mode 100644 index 0000000..bcf3866 --- /dev/null +++ b/app/src/main/java/com/example/komodohub/models/StableArrayAdapter.java @@ -0,0 +1,32 @@ +package com.example.komodohub.models; + +import android.content.Context; +import android.widget.ArrayAdapter; + +import java.util.HashMap; +import java.util.List; + +public class StableArrayAdapter extends ArrayAdapter { + + HashMap mIdMap = new HashMap(); + + public StableArrayAdapter(Context context, int textViewResourceId, + List objects) { + super(context, textViewResourceId, objects); + for (int i = 0; i < objects.size(); ++i) { + mIdMap.put(objects.get(i), i); + } + } + + @Override + public long getItemId(int position) { + String item = getItem(position); + return mIdMap.get(item); + } + + @Override + public boolean hasStableIds() { + return true; + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/example/komodohub/placeholder/PlaceholderContent.java b/app/src/main/java/com/example/komodohub/placeholder/PlaceholderContent.java new file mode 100644 index 0000000..92f84b8 --- /dev/null +++ b/app/src/main/java/com/example/komodohub/placeholder/PlaceholderContent.java @@ -0,0 +1,72 @@ +package com.example.komodohub.placeholder; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * Helper class for providing sample content for user interfaces created by + * Android template wizards. + *

+ * TODO: Replace all uses of this class before publishing your app. + */ +public class PlaceholderContent { + + /** + * An array of sample (placeholder) items. + */ + public static final List ITEMS = new ArrayList(); + + /** + * A map of sample (placeholder) items, by ID. + */ + public static final Map ITEM_MAP = new HashMap(); + + private static final int COUNT = 25; + + static { + // Add some sample items. + for (int i = 1; i <= COUNT; i++) { + addItem(createPlaceholderItem(i)); + } + } + + private static void addItem(PlaceholderItem item) { + ITEMS.add(item); + ITEM_MAP.put(item.id, item); + } + + private static PlaceholderItem createPlaceholderItem(int position) { + return new PlaceholderItem(String.valueOf(position), "Item " + position, makeDetails(position)); + } + + private static String makeDetails(int position) { + StringBuilder builder = new StringBuilder(); + builder.append("Details about Item: ").append(position); + for (int i = 0; i < position; i++) { + builder.append("\nMore details information here."); + } + return builder.toString(); + } + + /** + * A placeholder item representing a piece of content. + */ + public static class PlaceholderItem { + public final String id; + public final String content; + public final String details; + + public PlaceholderItem(String id, String content, String details) { + this.id = id; + this.content = content; + this.details = details; + } + + @Override + public String toString() { + return content; + } + } +} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_admin_page.xml b/app/src/main/res/layout/activity_admin_page.xml index 9622036..f3c694b 100644 --- a/app/src/main/res/layout/activity_admin_page.xml +++ b/app/src/main/res/layout/activity_admin_page.xml @@ -41,4 +41,14 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> + + \ No newline at end of file diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index b8c47cb..86a51d5 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -3,4 +3,5 @@ 16dp 16dp + 16dp \ No newline at end of file diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 3389509..60852b1 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -11,6 +11,8 @@ navigationUi = "2.6.0" annotation = "1.6.0" lifecycleLivedataKtx = "2.6.1" lifecycleViewmodelKtx = "2.6.1" +legacySupportV4 = "1.0.0" +recyclerview = "1.3.0" [libraries] junit = { group = "junit", name = "junit", version.ref = "junit" } @@ -24,6 +26,8 @@ navigation-ui = { group = "androidx.navigation", name = "navigation-ui", version annotation = { group = "androidx.annotation", name = "annotation", version.ref = "annotation" } lifecycle-livedata-ktx = { group = "androidx.lifecycle", name = "lifecycle-livedata-ktx", version.ref = "lifecycleLivedataKtx" } lifecycle-viewmodel-ktx = { group = "androidx.lifecycle", name = "lifecycle-viewmodel-ktx", version.ref = "lifecycleViewmodelKtx" } +legacy-support-v4 = { group = "androidx.legacy", name = "legacy-support-v4", version.ref = "legacySupportV4" } +recyclerview = { group = "androidx.recyclerview", name = "recyclerview", version.ref = "recyclerview" } [plugins] android-application = { id = "com.android.application", version.ref = "agp" }