Android Open Source - ExpertAndroid Word List Adapter






From Project

Back to project page ExpertAndroid.

License

The source code is released under:

MIT License

If you think the Android project ExpertAndroid 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 com.androidbook.parse;
/* w  ww  .  ja v  a 2 s.  c  o  m*/
import java.util.List;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.TextView;

import com.parse.DeleteCallback;
import com.parse.ParseException;

//ArrayAdapter holds the data/rows in a list or array
//it passes this row object to getView with a position
public class WordListAdapter 
extends ArrayAdapter<Word>
implements View.OnClickListener
{

  private static String tag = "WordListAdapter";
  
  //String[] wordArray;
  Context ctx = null;
  LayoutInflater lif = null;
  IReportBack reportBack = null;
  
  public WordListAdapter(Context context, 
      List<Word> wordList,
      IReportBack inReportBack)
  {
        super(context
             ,R.layout.word_list_item_relative_layout
//             ,R.layout.word_list_item_layout
             ,R.id.wordListRowId
             ,wordList);
        ctx = context;
        lif = LayoutInflater.from(ctx);
        reportBack = inReportBack;
  }
  
  //This class saves references to the buttons that are displayed
  //for each row. if there are 10 rows then there are 10 buttons
  //and 10 instances of view holder
  static class ViewHolder
  {
    public ViewHolder(View rowView, View.OnClickListener ocl)
    {
      delButton =
        (Button)rowView.findViewById(R.id.wordListRowDelBtnId);
      playButton =
        (Button)rowView.findViewById(R.id.wordListRowSlvBtnId);
      textView =
        (TextView)rowView.findViewById(R.id.wordListRowWordId);
      
      contextView =
        (TextView)rowView.findViewById(R.id.wordListRowContextId);
      
      delButton.setOnClickListener(ocl);
      playButton.setOnClickListener(ocl);
      textView.setOnClickListener(ocl);
    }
    public TextView textView;
    public TextView contextView;
    public Button delButton;
    public Button playButton;
    
    //this is the object
    public Word wordAtThisRow;
  }

  //For a given position return a view
  @Override
  public View getView(int position, View convertView, ViewGroup parent) 
  {
    ViewHolder vh;
    View thisView;
    if (convertView == null)
    {
      //create the view
      View rowView =
        lif.inflate(R.layout.word_list_item_relative_layout,null);
      vh = new ViewHolder(rowView,this);
      rowView.setTag(vh);
      thisView = rowView;
    }
    else
    {
      //populate the view
      vh = (ViewHolder)convertView.getTag();
      thisView = convertView;
    }
    //got a view holder
    //and a view.
    
    Word curword = this.getItem(position);
    vh.textView.setText(curword.toString());
    vh.contextView.setText(curword.getCreatedAtAsString());
    
    //Notice how we are placing the tags
    //in the respective buttons
    vh.delButton.setTag(curword);
    vh.playButton.setTag(curword);
    
    vh.wordAtThisRow = curword;
    return thisView;
  }
  @Override
  public void onClick(View v) 
  {
    if (v.getId() == R.id.wordListRowDelBtnId)
    {
      Word word = (Word)v.getTag();
      Log.d(tag, "Delete Click detected for word:" + v.getTag());
      deleteWord(word);
      this.notifyDataSetChanged();
    }
    else if (v.getId() == R.id.wordListRowSlvBtnId)
    {
      Word word = (Word)v.getTag();
      Log.d(tag, "Play Click detected for word:" + v.getTag());
      gotoPlay(word);
    }
    else if (v.getId() == R.id.wordListRowId)
    {
      Log.d(tag, "TextView detected for word:");
    }
  }

  private Word curWordToDelete = null;
  private void deleteWord(Word wordRef)
  {
    curWordToDelete = wordRef;
    reportBack.reportTransient("Delete Button Clicked:" + wordRef.toString());
      reportBack.turnOffProgressDialog();
    wordRef.getParseObject().deleteInBackground(new DeleteCallback() {
      @Override
      public void done(ParseException e) {
          reportBack.turnOffProgressDialog();
          if (e == null) {
            deleteSuccessful(curWordToDelete);
          }
          else {
            deleteFailed(e,curWordToDelete);
          }
          curWordToDelete = null;
      }
    });
  }
  
  private void deleteFailed(ParseException x, Word wordRef)
  {
    String message = x.getMessage();
    reportBack.alert("Delete failed", "Not able to delete the word:" + wordRef.getWord());
  }
  private void deleteSuccessful(Word wordRef)
  {
    reportBack.reportTransient("Word deleted successfull:" + wordRef.getWord());
    this.remove(wordRef);
  }
  
  private void gotoPlay(Word wordRef)
  {
    Activity baseActivity = (Activity)reportBack;
    //noop
    reportBack.reportTransient("Play Button Clicked:" + wordRef.toString());
    Intent i = new Intent(baseActivity,WordMeaningsListActivity.class);
    i.putExtra(Word.PARCELABLE_WORD_ID, wordRef.po.getObjectId());
    i.putExtra(Word.t_tablename,wordRef);
    baseActivity.startActivity(i);
  }
}//eof-class





Java Source Code List

com.androidbook.notebad.NoteEditor.java
com.androidbook.notebad.NotePadProvider.java
com.androidbook.notebad.NotePad.java
com.androidbook.notebad.NotesList.java
com.androidbook.notebad.TitleEditor.java
com.androidbook.parse.BaseActivity.java
com.androidbook.parse.BaseListActivity.java
com.androidbook.parse.CreateAMeaningActivity.java
com.androidbook.parse.CreateAWordActivity.java
com.androidbook.parse.Field.java
com.androidbook.parse.FormActivity.java
com.androidbook.parse.IReportBack.java
com.androidbook.parse.IValidator.java
com.androidbook.parse.IValueValidator.java
com.androidbook.parse.LoginActivity.java
com.androidbook.parse.ParseApplication.java
com.androidbook.parse.ParseObjectWrapperOld1.java
com.androidbook.parse.ParseObjectWrapper.java
com.androidbook.parse.ParseStarterProjectActivity.java
com.androidbook.parse.PasswordFieldRule.java
com.androidbook.parse.PasswordResetActivity.java
com.androidbook.parse.PasswordResetSuccessActivity.java
com.androidbook.parse.SignupActivity.java
com.androidbook.parse.SignupSuccessActivity.java
com.androidbook.parse.StringUtils.java
com.androidbook.parse.UserListActivity.java
com.androidbook.parse.WelcomeActivity.java
com.androidbook.parse.WordListActivity.java
com.androidbook.parse.WordListAdapter.java
com.androidbook.parse.WordMeaningListAdapter.java
com.androidbook.parse.WordMeaning.java
com.androidbook.parse.WordMeaningsListActivity.java
com.androidbook.parse.Word.java
com.iuriio.demos.expertandroid.ch10search.MainActivity.java
com.iuriio.demos.expertandroid.ch10search.SearchActivity.java
com.iuriio.demos.expertandroid.ch11searchprovider.MainActivity.java
com.iuriio.demos.expertandroid.ch11searchprovider.SearchActivity.java
com.iuriio.demos.expertandroid.ch11searchprovider.SimpleSuggestionProvider.java
com.iuriio.demos.expertandroid.ch11searchprovider.SuggestUrlProvider.java
com.iuriio.demos.expertandroid.ch13parsesimple.BaseActivity.java
com.iuriio.demos.expertandroid.ch13parsesimple.LoginActivity.java
com.iuriio.demos.expertandroid.ch13parsesimple.MainActivity.java
com.iuriio.demos.expertandroid.ch13parsesimple.ParseApp.java
com.iuriio.demos.expertandroid.ch13parsesimple.ParseObjectWrapper.java
com.iuriio.demos.expertandroid.ch13parsesimple.ParseStarterProjectActivity.java
com.iuriio.demos.expertandroid.ch13parsesimple.PasswordResetSuccessActivity.java
com.iuriio.demos.expertandroid.ch13parsesimple.ResetPasswordActivity.java
com.iuriio.demos.expertandroid.ch13parsesimple.SignupActivity.java
com.iuriio.demos.expertandroid.ch13parsesimple.StringUtils.java
com.iuriio.demos.expertandroid.ch13parsesimple.WordListActivity.java
com.iuriio.demos.expertandroid.ch13parsesimple.Word.java
com.iuriio.demos.expertandroid.ch1circleview.AbstractBaseView.java
com.iuriio.demos.expertandroid.ch1circleview.CircleView.java
com.iuriio.demos.expertandroid.ch1circleview.MainActivity.java
com.iuriio.demos.expertandroid.ch2durationcontrol.DatePickerFragment.java
com.iuriio.demos.expertandroid.ch2durationcontrol.DurationControl.java
com.iuriio.demos.expertandroid.ch2durationcontrol.MainActivity.java
com.iuriio.demos.expertandroid.ch3flowlayout.FlowLayout.java
com.iuriio.demos.expertandroid.ch3flowlayout.MainActivity.java
com.iuriio.demos.expertandroid.ch4gsonserialization.ChildObject.java
com.iuriio.demos.expertandroid.ch4gsonserialization.MainActivity.java
com.iuriio.demos.expertandroid.ch4gsonserialization.MainObject.java
com.iuriio.demos.expertandroid.ch6forms.BaseActivity.java
com.iuriio.demos.expertandroid.ch6forms.Field.java
com.iuriio.demos.expertandroid.ch6forms.FormActivity.java
com.iuriio.demos.expertandroid.ch6forms.IValidator.java
com.iuriio.demos.expertandroid.ch6forms.IValueValidator.java
com.iuriio.demos.expertandroid.ch6forms.MainActivity.java
com.iuriio.demos.expertandroid.ch6forms.PasswordFieldRule.java
com.iuriio.demos.expertandroid.ch6forms.StringUtils.java
com.iuriio.demos.expertandroid.ch6forms.WelcomeActivity.java
com.iuriio.demos.expertandroid.ch9openglexperiments.AbstractRenderer.java
com.iuriio.demos.expertandroid.ch9openglexperiments.AnimatedSimpleTriangleRenderer.java
com.iuriio.demos.expertandroid.ch9openglexperiments.ES20AbstractRenderer.java
com.iuriio.demos.expertandroid.ch9openglexperiments.ES20ControlledAnimatedTexturedCubeRenderer.java
com.iuriio.demos.expertandroid.ch9openglexperiments.ES20SimpleTriangleRenderer.java
com.iuriio.demos.expertandroid.ch9openglexperiments.ES20SingleTextureAbstractRenderer.java
com.iuriio.demos.expertandroid.ch9openglexperiments.FrustumDimensions.java
com.iuriio.demos.expertandroid.ch9openglexperiments.MainActivity.java
com.iuriio.demos.expertandroid.ch9openglexperiments.MyApplication.java
com.iuriio.demos.expertandroid.ch9openglexperiments.OpenGLES10Activity.java
com.iuriio.demos.expertandroid.ch9openglexperiments.OpenGLES20Activity.java
com.iuriio.demos.expertandroid.ch9openglexperiments.PolygonRenderer.java
com.iuriio.demos.expertandroid.ch9openglexperiments.RegularPolygon.java
com.iuriio.demos.expertandroid.ch9openglexperiments.Shape.java
com.iuriio.demos.expertandroid.ch9openglexperiments.SimpleTriangleRenderer.java
converters.FieldTransporter.java
converters.IFieldTransport.java
converters.IntegerFieldTransport.java
converters.ParseObjectEssentials.java
converters.StringFieldTransport.java
converters.User.java
converters.ValueField.java