Android Open Source - RZAndroidBaseUtils Simple View Holder Strategy Example Activity






From Project

Back to project page RZAndroidBaseUtils.

License

The source code is released under:

MIT License

If you think the Android project RZAndroidBaseUtils 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.raizlabs.baseutils.examples.viewholderstrategy;
//from  www  . ja va  2 s .  com
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;
import java.util.Random;

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import android.widget.TextView;

import com.raizlabs.baseutils.examples.R;
import com.raizlabs.widget.adapters.ViewHolderStrategyAdapter;
import com.raizlabs.widget.utils.SimpleViewHolderStrategy;

public class SimpleViewHolderStrategyExampleActivity extends Activity {
  /**
   * Class which represents the data for one of our rows
   */
  public static class RowData {
    public int Color;
    public String Title;
    public String SubTitle;
    
    public RowData(int color, String title, String subTitle) {
      this.Color = color;
      this.Title = title;
      this.SubTitle = subTitle;
    }
  }

  private int currentCount = 0;
  /**
   * The adapter that contains our data
   */
  ViewHolderStrategyAdapter<RowData> adapter;
  
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_simpleviewholderstrategy);

    // Grab the list view we will be populating
    ListView listView = (ListView) findViewById(R.id.simpleViewHolderStrategy_listView);
    // Construct our strategy implementation
    StrategyImplementation strategy = new StrategyImplementation();
    // Create an adapter based on our strategy
    adapter = new ViewHolderStrategyAdapter<RowData>(strategy);
    // Attach our adapter to the list view
    listView.setAdapter(adapter);
    
    listView.setOnItemClickListener(new OnItemClickListener() {
      @Override
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        adapter.remove(position);
      }
    });
    
    // Handle the add 1 button
    findViewById(R.id.add1Button).setOnClickListener(new OnClickListener() {  
      @Override
      public void onClick(View v) {
        adapter.add(getNextRow());
      }
    });

    // Handle the add 5 button
    findViewById(R.id.add5Button).setOnClickListener(new OnClickListener() {
      @Override
      public void onClick(View v) {
        List<RowData> rows = new LinkedList<RowData>();
        for (int i = 0; i < 5; ++i) {
          rows.add(getNextRow());
        }
        adapter.addAll(rows);
      }
    });

    // Handle the clear button
    findViewById(R.id.clearButton).setOnClickListener(new OnClickListener() {  
      @Override
      public void onClick(View v) {
        adapter.clear();
      }
    });
    
    for (int i = 0; i < 10; ++i) {
      adapter.add(getNextRow());
    }
  }
  
  static final Random rand = new Random();
  static final int[] colors = new int[] { Color.BLUE, Color.GREEN, Color.MAGENTA,
    Color.RED, Color.CYAN, Color.YELLOW };
  static final DateFormat timeFormat = new SimpleDateFormat("h:m:s a");
  /**
   * @return The next row to display
   */
  RowData getNextRow() {
    int color = colors[rand.nextInt(colors.length)];
    String title = String.format("Row %s", getNextString()); 
    String subTitle = timeFormat.format(new Date());
    return new RowData(color, title, subTitle);
  }
  
  /**
   * @return The next string to display
   */
  private String getNextString() {
    return Integer.toString(++currentCount);
  }
  
  /**
   * Class which holds references to all the views we need to update.
   */
  public static class RowViewHolder {
    public View colorView;
    public TextView titleView;
    public TextView subTitleView;
  }
  
  /**
   * Implementation of the SimpleViewHolderStrategy for our example functionality.
   */
  private static class StrategyImplementation extends SimpleViewHolderStrategy<RowData, RowViewHolder>  {
    @Override
    public RowViewHolder createHolder(RowData item) {
      return new RowViewHolder();
    }

    @Override
    public void populateHolder(View view, RowViewHolder holder) {
      // Find each view we need
      holder.colorView = view.findViewById(R.id.simpleStrategy_row_color);
      holder.titleView = (TextView) view.findViewById(R.id.simpleStrategy_row_title);
      holder.subTitleView = (TextView) view.findViewById(R.id.simpleStrategy_row_subTitle);
    }

    @Override
    public void updateView(RowData item, RowViewHolder holder) {
      // Update each view via the holder
      holder.colorView.setBackgroundColor(item.Color);
      holder.titleView.setText(item.Title);
      holder.subTitleView.setText(item.SubTitle);
    }

    @Override
    protected int getLayoutResID(RowData item) {
      return R.layout.simpleviewholderstrategy_row;
    }
  }
}




Java Source Code List

com.raizlabs.baseutils.CompatibilityUtils.java
com.raizlabs.baseutils.IOUtils.java
com.raizlabs.baseutils.Logger.java
com.raizlabs.baseutils.Math.java
com.raizlabs.baseutils.StringUtils.java
com.raizlabs.baseutils.ThreadingUtils.java
com.raizlabs.baseutils.Wrapper.java
com.raizlabs.baseutils.examples.MainActivity.java
com.raizlabs.baseutils.examples.asyncdrawable.AsyncDrawableExampleActivity.java
com.raizlabs.baseutils.examples.asyncdrawable.AsyncDrawableListExampleActivity.java
com.raizlabs.baseutils.examples.simplegenericadapter.SimpleGenericAdapterExampleActivity.java
com.raizlabs.baseutils.examples.viewgroupadapter.ViewGroupAdapterExampleActivity.java
com.raizlabs.baseutils.examples.viewholderstrategy.SimpleViewHolderStrategyExampleActivity.java
com.raizlabs.collections.ListUtils.java
com.raizlabs.collections.MappableSet.java
com.raizlabs.collections.TransactionalHashSet.java
com.raizlabs.concurrent.BasePrioritizedRunnable.java
com.raizlabs.concurrent.ConcurrencyUtils.java
com.raizlabs.concurrent.PrioritizedRunnable.java
com.raizlabs.concurrent.Prioritized.java
com.raizlabs.content.sharing.SharingUtils.java
com.raizlabs.database.CursorIterable.java
com.raizlabs.database.CursorIterator.java
com.raizlabs.events.EventListener.java
com.raizlabs.events.Event.java
com.raizlabs.events.ProgressListener.java
com.raizlabs.events.SimpleEventListener.java
com.raizlabs.functions.Delegate.java
com.raizlabs.functions.Predicate.java
com.raizlabs.functions.Provider.java
com.raizlabs.graphics.ImageFactory.java
com.raizlabs.graphics.drawable.async.AsyncDrawableTask.java
com.raizlabs.graphics.drawable.async.AsyncDrawableUtils.java
com.raizlabs.graphics.drawable.async.AsyncDrawableWrapper.java
com.raizlabs.graphics.drawable.async.AsyncDrawable.java
com.raizlabs.graphics.drawable.async.BaseAsyncDrawableTask.java
com.raizlabs.imagecaching.ImageCache.java
com.raizlabs.imagecaching.PrefixedImageCacheAdapter.java
com.raizlabs.imagecaching.StubImageCache.java
com.raizlabs.json.JSONArrayParserDelegate.java
com.raizlabs.json.JSONHelper.java
com.raizlabs.synchronization.OneShotLock.java
com.raizlabs.tasks.RZAsyncTaskEvent.java
com.raizlabs.tasks.RZAsyncTaskListener.java
com.raizlabs.tasks.RZAsyncTask.java
com.raizlabs.util.observable.ObservableData.java
com.raizlabs.util.observable.ObservableListAdapter.java
com.raizlabs.util.observable.ObservableList.java
com.raizlabs.view.ViewCompatibility.java
com.raizlabs.view.animation.AnimationListenerWrapper.java
com.raizlabs.view.animation.RelativeLayoutParamsAnimation.java
com.raizlabs.view.animation.ResizeAnimation.java
com.raizlabs.widget.EvenLinearLayout.java
com.raizlabs.widget.ImageMixView.java
com.raizlabs.widget.SlideRevealLayout.java
com.raizlabs.widget.ViewUtils.java
com.raizlabs.widget.adapters.ListBasedAdapter.java
com.raizlabs.widget.adapters.SimpleGenericAdapter.java
com.raizlabs.widget.adapters.ViewGroupAdapter.java
com.raizlabs.widget.adapters.ViewHolderStrategyAdapter.java
com.raizlabs.widget.utils.SimpleViewHolderStrategy.java
com.raizlabs.widget.utils.ViewHolderStrategyConverter.java
com.raizlabs.widget.utils.ViewHolderStrategyUtils.java
com.raizlabs.widget.utils.ViewHolderStrategy.java