Giter Club home page Giter Club logo

vocabularyquiz's People

Stargazers

 avatar

Watchers

 avatar

vocabularyquiz's Issues

Create different types of tests

Currently the test picks up the words that have the worst (passed-failed) number. This is good to learn the words that fail most, but it also means that words recently added don't make it into the tests too often.

We want two new types of tests:

  • One to ask words that haven't been asked too often, i.e. smallest (failed+passed).
  • A random one

DB access functionality is duplicated everywhere

This snippet of code is everywhere:

dba = Room.databaseBuilder( getApplicationContext(), VocabularyDB.class, "vocabulary-db" ).allowMainThreadQueries().build().getDBAccessor();

Let's 1) refactor it into some class or method that we can reuse, and 2) hopefully run it just once e.g. store it in some attribute somewhere?

Show list of config options

The options stored in the DB should be also visible to the user. Currently there is a "ListConfigOptionsActivity" but it's just a skeleton, i.e. it does nothing.

Implementation should probably be similar to the visualization of the dictionary in "ListDictionaryActivity".

Fix GoogleAppIndexingWarning

Following message seen in AndroidManifest.xml:

"App is not indexable by Google Search; consider adding at least one Activity with an ACTION-VIEW intent filter. See issue explanation for more details. less... (Ctrl+F1)

Inspection info:Adds URLs to get your app into the Google index, to get installs and traffic to your app from Google Search. Issue id: GoogleAppIndexingWarning More info: https://g.co/AppIndexing/AndroidStudio "

Add option to back up and restore the DB

This issue requires some investigation on how to do that. Cloud storage? CSV?

Additionally, it would be pretty cool to be able to share dictionaries (for extra points)!

Allow synonyms in the DB

Right now there is a 1:1 mapping between words and their meaning. This is not how languages work. For example, in Hindi there are several words for "uncle". We want to be able to 1) store multiple meanings of a word, and one meaning be suitable for many words, i.e. many-to-many relationship.

This issue requires modifying the DB, which requires adding a migration path from the old DB number.

Reuse convertView instead of creating a new view

WordAdapter creates a new view in getView(), but this is not optimal. We should check if the current view is suitable (list_dictionary_element or list_dictionary_header), and reuse it if appropriate.

Prompt for a double-check message before deleting the word

When selecting a word for deletion, the app deletes it directly. Someone could hit the button by accident and would lose a word, which could be annoying. Let's add a dialog prompting for confirmation from the user on the deletion.

Improve responsiveness of queries to the DB

We currently allow queries to the Room DB in the main thread by calling allowMainThreadQueries(). This may lock the UI for a long time if the query is long. I think this is already affecting responsiveness negatively when opening the Dictionary list as the list of words increase.

This could be done in two ways:

  • Do DB queries in a separate thread (not sure how yet).
  • Return instances of LiveData or Flowable in the queries.

More information on how to do it properly is available here: https://developer.android.com/training/data-storage/room/accessing-data.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.