Android Open Source - SudokuSolver Sudoku Loader Activity






From Project

Back to project page SudokuSolver.

License

The source code is released under:

License JSON Sudoku Solver is covered under the Creative Commons Attribution 3.0 Unported License http://creativecommons.org/licenses/by/3.0/ Credits Sudoku Solver Java implementation: Kevin Coulombe...

If you think the Android project SudokuSolver 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

/**
 * JSON Sudoku solver is covered under the Creative Commons Attribution 3.0 Unported License
 * http://creativecommons.org/licenses/by/3.0/
 * /*from w ww.jav  a2  s  .  c  o  m*/
 * @author: Andrea Bizzotto {@link www.musevisions.com}, {@link www.bizzotto.biz}
 * @email: bizz84dev@gmail.com
 */
package com.musevisions.android.SudokuSolver;

import java.util.ArrayList;
import java.util.List;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.app.Activity;
import android.os.Bundle;
import android.view.InflateException;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TabHost;
import android.widget.TextView;
import android.widget.AdapterView.OnItemClickListener;

/** Class to load available Sudoku games from remote URL.
 * This class uses a List View to hold a list of Sudoku games retrieved from the main server.
 *   
 * @author andrea
 *
 */
public class SudokuLoaderActivity extends Activity implements SudokuRetrieverTask.SudokuRetrieverPreparedListener {

  //private static final String TAG = "SudokuLoaderActivity";
  private SudokuRetriever mRetriever;
  private ListView mListView;
  private TextView mTextView;
  
  private MainTabActivity mMainActivity;
  
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.loader);

        mMainActivity = (MainTabActivity)getParent(); 
        mMainActivity.setLoaderActivity(this);
        
        mTextView = (TextView)findViewById(R.id.textInfo);
        
        mListView = (ListView)findViewById(R.id.listView);
        mListView.setOnItemClickListener(new OnItemClickListener() {

      @Override
      public void onItemClick(AdapterView<?> parent, View view,
          int position, long id) {

        PuzzleHolder holder = (PuzzleHolder)mListView.getAdapter().getItem(position);
        //Toast.makeText(SudokuLoaderActivity.this, holder.name, Toast.LENGTH_SHORT);
        
        mMainActivity.getSolverActivity().updateView(holder.puzzle, holder.name);
        TabHost tabHost =  (TabHost)getParent().findViewById(android.R.id.tabhost);
        tabHost.setCurrentTab(0);
      }    
        });
    }

    @Override
    protected void onResume() {
      super.onResume();
      updateResults();
    }
    
    private void updateResults() {
        if (HttpPostUtils.isConnected(this)) {
          mTextView.setVisibility(View.GONE);
          mRetriever = new SudokuRetriever();
            (new SudokuRetrieverTask(mRetriever,this)).execute();
        }
        else {
          mTextView.setVisibility(View.VISIBLE);
          mTextView.setText("Check Internet Connection");
        }
    }
    
    private void updateView(JSONArray results) {
      ListView lv = (ListView)findViewById(R.id.listView);
      
      /* Fill list with all json files */
      ArrayList<PuzzleHolder> list = new ArrayList<PuzzleHolder>();
      for (int i = 0; i < results.length(); i++) {
        try {
        JSONObject obj = results.getJSONObject(i);
        JSONArray names = obj.names();
          String name = names.getString(0);
          JSONArray array = obj.getJSONArray(name);
          int puzzle[] = JSONHelper.toIntArray(array);
          if (puzzle != null)          
            list.add(new PuzzleHolder(name, puzzle));
        //Log.v(TAG, "File: " + name);
      } catch (JSONException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
      }        
      }
      
    lv.setAdapter(new ListArrayAdapter(this, list));
    }
    
    
  @Override
  public void onSudokuRetrieverPrepared() {
    updateView(mRetriever.getContents());
  }
  
  private class PuzzleHolder {
    String name;
    int puzzle[];
    public PuzzleHolder(String name, int puzzle[]) {
      this.name = name;
      this.puzzle = puzzle;
    }
  }
  
  // http://www.vogella.com/articles/AndroidListView/article.html#ownadapter_viewHolder
    private class ListArrayAdapter extends ArrayAdapter<PuzzleHolder> {
      
      Activity activity;
      List<PuzzleHolder> data;
      
      public ListArrayAdapter(Activity context, List<PuzzleHolder> data) {
        super(context, R.layout.row_layout, data);
        this.activity = context;
        this.data = data;
      }
 
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
          View rowView = convertView;
        if (rowView == null) {  
          try {
            LayoutInflater inflater = activity.getLayoutInflater();
            rowView = inflater.inflate(R.layout.row_layout, null);
          }
          catch (InflateException ex) {
            
            ex.printStackTrace();
            return null;
          }
        }

        TextView label = (TextView)rowView.findViewById(R.id.textLabel);
        PuzzleHolder holder = data.get(position); 
      
      label.setText(holder.name);    
      
      rowView.setTag(label);

      return rowView;
        }
    }

}




Java Source Code List

com.musevisions.android.SudokuSolver.CustomDialogs.java
com.musevisions.android.SudokuSolver.GridView.java
com.musevisions.android.SudokuSolver.HttpPostUtils.java
com.musevisions.android.SudokuSolver.JSONHelper.java
com.musevisions.android.SudokuSolver.MainTabActivity.java
com.musevisions.android.SudokuSolver.StoreHelper.java
com.musevisions.android.SudokuSolver.SudokuCore.java
com.musevisions.android.SudokuSolver.SudokuLoaderActivity.java
com.musevisions.android.SudokuSolver.SudokuRetrieverTask.java
com.musevisions.android.SudokuSolver.SudokuRetriever.java
com.musevisions.android.SudokuSolver.SudokuSolverActivity.java
com.musevisions.android.SudokuSolver.SudokuSolverBruteForce.java
com.musevisions.android.SudokuSolver.SudokuSolverOptimised.java
com.musevisions.android.SudokuSolver.SudokuSolverTask.java