diff --git a/MyCity/app/build.gradle b/MyCity/app/build.gradle index 9e5ede1..22557ae 100644 --- a/MyCity/app/build.gradle +++ b/MyCity/app/build.gradle @@ -25,6 +25,8 @@ dependencies { implementation 'com.android.support:appcompat-v7:27.0.0' implementation 'com.android.support:design:27.0.0' implementation 'com.android.support.constraint:constraint-layout:1.1.3' + implementation 'com.android.support:support-v4:27.1.1' + implementation 'com.android.support:recyclerview-v7:27.1.1' testImplementation 'junit:junit:4.12' androidTestImplementation 'com.android.support.test:runner:1.0.2' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' diff --git a/MyCity/app/src/main/java/gq/yigit/mycity/fileActions.java b/MyCity/app/src/main/java/gq/yigit/mycity/FileActions.java similarity index 97% rename from MyCity/app/src/main/java/gq/yigit/mycity/fileActions.java rename to MyCity/app/src/main/java/gq/yigit/mycity/FileActions.java index e74cc3d..a872fec 100644 --- a/MyCity/app/src/main/java/gq/yigit/mycity/fileActions.java +++ b/MyCity/app/src/main/java/gq/yigit/mycity/FileActions.java @@ -5,7 +5,7 @@ import android.util.Log; import java.io.*; -public class fileActions { +public class FileActions { public void writeToFile(String data, Context context, String file_name) { try { diff --git a/MyCity/app/src/main/java/gq/yigit/mycity/MainActivity.java b/MyCity/app/src/main/java/gq/yigit/mycity/MainActivity.java index 35fdf5b..f969d34 100644 --- a/MyCity/app/src/main/java/gq/yigit/mycity/MainActivity.java +++ b/MyCity/app/src/main/java/gq/yigit/mycity/MainActivity.java @@ -3,11 +3,11 @@ package gq.yigit.mycity; import android.content.Context; import android.content.DialogInterface; import android.os.Bundle; -import android.support.constraint.ConstraintLayout; import android.support.design.widget.FloatingActionButton; import android.support.design.widget.Snackbar; +import android.support.v4.app.FragmentManager; +import android.support.v4.app.FragmentTransaction; import android.support.v7.app.AlertDialog; -import android.util.Log; import android.view.*; import android.support.design.widget.NavigationView; import android.support.v4.view.GravityCompat; @@ -16,13 +16,11 @@ import android.support.v7.app.ActionBarDrawerToggle; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.widget.EditText; -import android.widget.RelativeLayout; -import android.widget.ViewFlipper; - -import java.io.*; +import gq.yigit.mycity.vote.VotesContent; +import gq.yigit.mycity.vote.VotesFragment; public class MainActivity extends AppCompatActivity - implements NavigationView.OnNavigationItemSelectedListener { + implements NavigationView.OnNavigationItemSelectedListener, VotesFragment.OnListFragmentInteractionListener { public Context cntxt; @@ -71,9 +69,7 @@ public class MainActivity extends AppCompatActivity @Override public boolean onOptionsItemSelected(MenuItem item) { - // Handle action bar item clicks here. The action bar will - // automatically handle clicks on the Home/Up button, so long - // as you specify a parent activity in AndroidManifest.xml. + int id = item.getItemId(); //noinspection SimplifiableIfStatement @@ -86,7 +82,7 @@ public class MainActivity extends AppCompatActivity alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { - fileActions file_manager = new fileActions(); + FileActions file_manager = new FileActions(); file_manager.writeToFile(input.getText().toString(),cntxt,"serverip.config"); } }); @@ -109,14 +105,14 @@ public class MainActivity extends AppCompatActivity public boolean onNavigationItemSelected(MenuItem item) { // Handle navigation view item clicks here. int id = item.getItemId(); + FragmentManager fragmentManager = getSupportFragmentManager(); + FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); if (id == R.id.voting) { - ViewFlipper vf = (ViewFlipper)findViewById(R.id.page); - try { - vf.setDisplayedChild(1); - }catch (Exception e){ - Log.e("[ERROR]",e.toString()); - } + VotesFragment fragment = new VotesFragment(); + fragmentTransaction.add(R.id.app_bar_main, fragment); + fragmentTransaction.commit(); + } else if (id == R.id.parking) { } else if (id == R.id.transit) { @@ -134,4 +130,8 @@ public class MainActivity extends AppCompatActivity return true; } + public void onListFragmentInteraction(VotesContent.VoteItem vote){ + + } + } diff --git a/MyCity/app/src/main/java/gq/yigit/mycity/vote/MyVotesRecyclerViewAdapter.java b/MyCity/app/src/main/java/gq/yigit/mycity/vote/MyVotesRecyclerViewAdapter.java new file mode 100644 index 0000000..e0f97cc --- /dev/null +++ b/MyCity/app/src/main/java/gq/yigit/mycity/vote/MyVotesRecyclerViewAdapter.java @@ -0,0 +1,73 @@ +package gq.yigit.mycity.vote; + +import android.support.v7.widget.RecyclerView; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import gq.yigit.mycity.R; +import gq.yigit.mycity.vote.VotesFragment.OnListFragmentInteractionListener; +import gq.yigit.mycity.vote.VotesContent.VoteItem; + +import java.util.List; + +public class MyVotesRecyclerViewAdapter extends RecyclerView.Adapter { + + private final List mValues; + private final OnListFragmentInteractionListener mListener; + + public MyVotesRecyclerViewAdapter(List items, OnListFragmentInteractionListener listener) { + mValues = items; + mListener = listener; + } + + @Override + public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + View view = LayoutInflater.from(parent.getContext()) + .inflate(R.layout.fragment_votes, parent, false); + return new ViewHolder(view); + } + + @Override + public void onBindViewHolder(final ViewHolder holder, int position) { + + + holder.mItem = mValues.get(position); + holder.mIdView.setText(mValues.get(position).name); + holder.mContentView.setText(mValues.get(position).details); + + holder.mView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (null != mListener) { + mListener.onListFragmentInteraction(holder.mItem); + } + } + }); + } + + @Override + public int getItemCount() { + return mValues.size(); + } + + public class ViewHolder extends RecyclerView.ViewHolder { + public final View mView; + public final TextView mIdView; + public final TextView mContentView; + public VoteItem mItem; + + public ViewHolder(View view) { + super(view); + mView = view; + mIdView = (TextView) view.findViewById(R.id.item_number); + mContentView = (TextView) view.findViewById(R.id.content); + } + + @Override + public String toString() { + return super.toString() + " '" + mContentView.getText() + "'"; + } + } +} diff --git a/MyCity/app/src/main/java/gq/yigit/mycity/VotesActivity.java b/MyCity/app/src/main/java/gq/yigit/mycity/vote/VotesActivity.java similarity index 51% rename from MyCity/app/src/main/java/gq/yigit/mycity/VotesActivity.java rename to MyCity/app/src/main/java/gq/yigit/mycity/vote/VotesActivity.java index a31b4a7..09db8e7 100644 --- a/MyCity/app/src/main/java/gq/yigit/mycity/VotesActivity.java +++ b/MyCity/app/src/main/java/gq/yigit/mycity/vote/VotesActivity.java @@ -1,4 +1,4 @@ -package gq.yigit.mycity; +package gq.yigit.mycity.vote; public class VotesActivity { } diff --git a/MyCity/app/src/main/java/gq/yigit/mycity/vote/VotesContent.java b/MyCity/app/src/main/java/gq/yigit/mycity/vote/VotesContent.java new file mode 100644 index 0000000..ec2a556 --- /dev/null +++ b/MyCity/app/src/main/java/gq/yigit/mycity/vote/VotesContent.java @@ -0,0 +1,48 @@ +package gq.yigit.mycity.vote; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class VotesContent { + + public static final List ITEMS = new ArrayList(); + + + public static final Map ITEM_MAP = new HashMap(); + private static void addItem(VoteItem item) { + ITEMS.add(item); + ITEM_MAP.put(item.id, item); + } + + private static VoteItem creaVoteItem(int position) { + return new VoteItem(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(); + } + + public static class VoteItem { + public final String id; + public final String name; + public final String details; + + public VoteItem(String id, String name, String details) { + this.id = id; + this.name = name; + this.details = details; + } + + @Override + public String toString() { + return name; + } + } +} diff --git a/MyCity/app/src/main/java/gq/yigit/mycity/vote/VotesFragment.java b/MyCity/app/src/main/java/gq/yigit/mycity/vote/VotesFragment.java new file mode 100644 index 0000000..d4dd589 --- /dev/null +++ b/MyCity/app/src/main/java/gq/yigit/mycity/vote/VotesFragment.java @@ -0,0 +1,86 @@ +package gq.yigit.mycity.vote; + +import android.content.Context; +import android.os.Bundle; +import android.support.v4.app.Fragment; +import android.support.v7.widget.GridLayoutManager; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import gq.yigit.mycity.FileActions; +import gq.yigit.mycity.R; +import gq.yigit.mycity.vote.VotesContent.VoteItem; + + +public class VotesFragment extends Fragment { + + private static final String ARG_COLUMN_COUNT = "column-count"; + private int mColumnCount = 1; + private OnListFragmentInteractionListener mListener; + + public VotesFragment() { + } + + public static VotesFragment newInstance(int columnCount) { + VotesFragment fragment = new VotesFragment(); + Bundle args = new Bundle(); + args.putInt(ARG_COLUMN_COUNT, columnCount); + fragment.setArguments(args); + return fragment; + } + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + if (getArguments() != null) { + mColumnCount = getArguments().getInt(ARG_COLUMN_COUNT); + } + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + View view = inflater.inflate(R.layout.fragment_votes_list, container, false); + + // Set the adapter + if (view instanceof RecyclerView) { + Context context = view.getContext(); + RecyclerView recyclerView = (RecyclerView) view; + if (mColumnCount <= 1) { + recyclerView.setLayoutManager(new LinearLayoutManager(context)); + } else { + recyclerView.setLayoutManager(new GridLayoutManager(context, mColumnCount)); + } + FileActions file_manager = new FileActions(); + + recyclerView.setAdapter(new MyVotesRecyclerViewAdapter(VotesContent.ITEMS, mListener)); + } + return view; + } + + + @Override + public void onAttach(Context context) { + super.onAttach(context); + if (context instanceof OnListFragmentInteractionListener) { + mListener = (OnListFragmentInteractionListener) context; + } else { + throw new RuntimeException(context.toString() + + " must implement OnListFragmentInteractionListener"); + } + } + + @Override + public void onDetach() { + super.onDetach(); + mListener = null; + } + + public interface OnListFragmentInteractionListener { + void onListFragmentInteraction(VoteItem item); + } + +} diff --git a/MyCity/app/src/main/res/drawable/bus.xml b/MyCity/app/src/main/res/drawable-v21/bus.xml similarity index 100% rename from MyCity/app/src/main/res/drawable/bus.xml rename to MyCity/app/src/main/res/drawable-v21/bus.xml diff --git a/MyCity/app/src/main/res/drawable/navigation.xml b/MyCity/app/src/main/res/drawable-v21/navigation.xml similarity index 100% rename from MyCity/app/src/main/res/drawable/navigation.xml rename to MyCity/app/src/main/res/drawable-v21/navigation.xml diff --git a/MyCity/app/src/main/res/drawable/parking.xml b/MyCity/app/src/main/res/drawable-v21/parking.xml similarity index 100% rename from MyCity/app/src/main/res/drawable/parking.xml rename to MyCity/app/src/main/res/drawable-v21/parking.xml diff --git a/MyCity/app/src/main/res/drawable/star.xml b/MyCity/app/src/main/res/drawable-v21/star.xml similarity index 100% rename from MyCity/app/src/main/res/drawable/star.xml rename to MyCity/app/src/main/res/drawable-v21/star.xml diff --git a/MyCity/app/src/main/res/drawable/utility.xml b/MyCity/app/src/main/res/drawable-v21/utility.xml similarity index 100% rename from MyCity/app/src/main/res/drawable/utility.xml rename to MyCity/app/src/main/res/drawable-v21/utility.xml diff --git a/MyCity/app/src/main/res/drawable/vote.xml b/MyCity/app/src/main/res/drawable-v21/vote.xml similarity index 100% rename from MyCity/app/src/main/res/drawable/vote.xml rename to MyCity/app/src/main/res/drawable-v21/vote.xml diff --git a/MyCity/app/src/main/res/drawable/vote_style.xml b/MyCity/app/src/main/res/drawable/vote_style.xml new file mode 100644 index 0000000..7580a99 --- /dev/null +++ b/MyCity/app/src/main/res/drawable/vote_style.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/MyCity/app/src/main/res/layout/app_bar_main.xml b/MyCity/app/src/main/res/layout/app_bar_main.xml index e7a93be..2583eba 100644 --- a/MyCity/app/src/main/res/layout/app_bar_main.xml +++ b/MyCity/app/src/main/res/layout/app_bar_main.xml @@ -5,6 +5,7 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" + android:id="@+id/app_bar_main" tools:context=".MainActivity"> - - - - - - + + + + + + + + diff --git a/MyCity/app/src/main/res/layout/fragment_votes_list.xml b/MyCity/app/src/main/res/layout/fragment_votes_list.xml new file mode 100644 index 0000000..2ec6708 --- /dev/null +++ b/MyCity/app/src/main/res/layout/fragment_votes_list.xml @@ -0,0 +1,16 @@ + + \ No newline at end of file diff --git a/MyCity/app/src/main/res/layout/voting_content.xml b/MyCity/app/src/main/res/layout/voting_content.xml deleted file mode 100644 index 15984a8..0000000 --- a/MyCity/app/src/main/res/layout/voting_content.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - \ No newline at end of file diff --git a/MyCity/app/src/main/res/values/dimens.xml b/MyCity/app/src/main/res/values/dimens.xml index 32f2c1c..2b8eaf0 100644 --- a/MyCity/app/src/main/res/values/dimens.xml +++ b/MyCity/app/src/main/res/values/dimens.xml @@ -5,4 +5,5 @@ 8dp 176dp 16dp + 16dp \ No newline at end of file