Android Open Source - OpenHSK Create Word List Activity






From Project

Back to project page OpenHSK.

License

The source code is released under:

This work is licensed under a Creative Commons Attribution 3.0 Unported License. Original author of word lists: http://lingomi.com/ Original author of definitions: http://cc-cedict.org Original autho...

If you think the Android project OpenHSK listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package edu.openhsk;
// w ww  .  j  a v a 2s  .c o  m
import static edu.openhsk.repository.DatabaseMetadata.T_WORDS;

import java.io.IOException;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.LoaderManager.LoaderCallbacks;
import android.support.v4.content.Loader;
import android.util.Log;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.AdapterContextMenuInfo;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.SimpleCursorAdapter.ViewBinder;
import android.widget.TextView;
import edu.openhsk.repository.DatabaseHelper;
import edu.openhsk.repository.SimpleCursorLoader;

public class CreateWordListActivity extends FragmentActivity implements LoaderCallbacks<Cursor> {
  private static final String LOG_TAG = CreateWordListActivity.class.getSimpleName();
  private static final int ADD_WORD_REQUEST_CODE = 1;

  protected static final String NEW_WORD_LIST_ID_EXTRA = "edu.openhsk.createwordlist.wordListId";
  protected static final String NEW_WORD_LIST_NAME_EXTRA = "edu.openhsk.createwordlist.wordListName";
  
  private ListView listView;
  private DatabaseHelper dbh;
  private SimpleCursorAdapter adapter;
  private ViewBinder viewBinder;
  private static int wordListId;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.create_word_list);
    
    Intent intent = getIntent();
    wordListId = intent.getIntExtra(NEW_WORD_LIST_ID_EXTRA, -1);
    setTitle(intent.getStringExtra(NEW_WORD_LIST_NAME_EXTRA));
    
    dbh = getDBHelper();
    
    listView = (ListView) findViewById(R.id.wordListListView);
    registerForContextMenu(listView);
    refreshList();
    
    getSupportLoaderManager().initLoader(1, null, this);
    
    View footerView = findViewById(R.id.wordListFooterButtonAddNewWord);
    footerView.setOnClickListener(new OnClickListener() {
      @Override
      public void onClick(View view) {
        Intent intent = new Intent(CreateWordListActivity.this, CreateWordActivity.class);
        startActivityForResult(intent, ADD_WORD_REQUEST_CODE);
      }
    });
    View footerView2 = findViewById(R.id.wordListFooterButtonSaveWordList);
    footerView2.setOnClickListener(new OnClickListener() {
      @Override
      public void onClick(View v) {
        startActivity(new Intent(CreateWordListActivity.this, WordListSelectionActivity.class));
      }
    });
    
    listView.setOnItemClickListener(new ListView.OnItemClickListener() {
      @Override
      public void onItemClick(AdapterView<?> parent, View view,
          int position, long id) {
        editWord((int)id);
      }
    });
  }
  
  @Override
  protected void onResume() {
    if (listView == null) {
      listView = (ListView) findViewById(R.id.wordListListView);
      refreshList();
    }
    super.onResume();
  }
  
  @Override
  protected void onNewIntent(Intent intent) {
    //unused
    super.onNewIntent(intent);
  }
  
  @Override
  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == ADD_WORD_REQUEST_CODE && resultCode == Activity.RESULT_OK) {
      int wordId = data.getIntExtra(CreateWordActivity.EDITED_WORD_ID, -1);
      String hanzi = data.getStringExtra(CreateWordActivity.NEW_WORD_HANZI);
      String pinyin = data.getStringExtra(CreateWordActivity.NEW_WORD_PINYIN);
      String definition = data.getStringExtra(CreateWordActivity.NEW_WORD_DEFINITION);
      try {
        if (wordId != -1) {
          getDBHelper().editWord(wordId, hanzi, pinyin, definition, wordListId);
        } else {
          getDBHelper().addNewWord(hanzi, pinyin, definition, wordListId);
        }
        getSupportLoaderManager().restartLoader(1, null, this);
        Log.d(LOG_TAG, "Added " + hanzi + " to list " + wordListId);
      } catch (IOException e) {
        e.printStackTrace();
      }
    }
    
    super.onActivityResult(requestCode, resultCode, data);
  }

  private void refreshList() {
    TextView tv = new TextView(this);
    tv.setText(R.string.no_chars_found);
    listView.setEmptyView(tv);
    String[] from = new String[] {"word", "pinyin", "definition", "islearned"};
    int[] to = new int[] {R.id.charListView, R.id.pinyinListView, R.id.defListView};
    adapter = new SimpleCursorAdapter(this, R.layout.list_item, null, from, to);
    adapter.setViewBinder(viewBinder);
    listView.setAdapter(adapter);
  }

  private DatabaseHelper getDBHelper() {
    if (dbh == null) {
      dbh = new DatabaseHelper(this);
    }
    return dbh;
  }
  
  @Override
  public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
      super.onCreateContextMenu(menu, v, menuInfo);
      MenuInflater inflater = getMenuInflater();
      inflater.inflate(R.menu.word_context_menu, menu);
  }
  
  @Override
  public boolean onContextItemSelected(MenuItem item) {
    AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
      switch (item.getItemId()) {
          case R.id.deleteWordOptionsItem:
            getDBHelper().deleteWord(info.id);
            getSupportLoaderManager().restartLoader(1, null, this);
            return true;
          case R.id.editWordOptionsItem:
            editWord((int)info.id);
              return true;
          default:
              return super.onContextItemSelected(item);
      }
  }

  private void editWord(int id) {
    Intent intent = new Intent(CreateWordListActivity.this, CreateWordActivity.class);
    intent.putExtra(CreateWordActivity.ID_OF_WORD_TO_EDIT_EXTRA, id);
    startActivityForResult(intent, ADD_WORD_REQUEST_CODE);
  }

  @Override
  public Loader<Cursor> onCreateLoader(int id, Bundle args) {
    return new WordCursorLoader(this, getDBHelper());
  }

  @Override
  public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
    adapter.changeCursor(cursor);
  }

  @Override
  public void onLoaderReset(Loader<Cursor> loader) {
    adapter.changeCursor(null);
  }
  
  @Override
  protected void onDestroy() {
    DatabaseHelper.closeDatabase(getDBHelper().getReadableDatabase());
    super.onDestroy();
  }
  
  public static final class WordCursorLoader extends SimpleCursorLoader {
    private static final String[] queryColumns = new String[] {"_id", "word", "pinyin", "definition", "islearned"};
    private final DatabaseHelper dbh;

    public WordCursorLoader(Context context, DatabaseHelper dbh) {
      super(context);
      this.dbh = dbh;
    }

    @Override
    public Cursor loadInBackground() {
      return dbh.getReadableDatabase().query(T_WORDS, queryColumns, "wordlistid = ?", 
          new String[] {String.valueOf(wordListId)}, "", "", "");
    }
  }
}




Java Source Code List

edu.openhsk.CharacterListActivity.java
edu.openhsk.CharacterViewActivity.java
edu.openhsk.CreateWordActivity.java
edu.openhsk.CreateWordListActivity.java
edu.openhsk.ExamActivity.java
edu.openhsk.ExamResultActivity.java
edu.openhsk.MainActivity.java
edu.openhsk.QuizActivity.java
edu.openhsk.WordListSelectionActivity.java
edu.openhsk.adapters.WordListViewBinder.java
edu.openhsk.adapters.WordViewBinder.java
edu.openhsk.models.ExamResult.java
edu.openhsk.models.Hanzi.java
edu.openhsk.models.QuizHanzi.java
edu.openhsk.models.WordList.java
edu.openhsk.repository.DatabaseHelper.java
edu.openhsk.repository.DatabaseMetadata.java
edu.openhsk.repository.HanziRepository.java
edu.openhsk.repository.HelpfulCursor.java
edu.openhsk.repository.QuizRepository.java
edu.openhsk.repository.SimpleCursorLoader.java
edu.openhsk.repository.WordListRepository.java
edu.openhsk.service.QuizService.java
edu.openhsk.utils.AsyncSoundPlayer.java
edu.openhsk.utils.CSVExporter.java
edu.openhsk.utils.CSVParser.java
edu.openhsk.utils.PinyinReplacer.java
edu.openhsk.utils.SoundManager.java
edu.openhsk.views.BarGraph.java
edu.openhsk.views.Bar.java
edu.openhsk.views.ExamResultPieChart.java