Android 比ListView更有效率的Listoy2015-05-21 00:08:25

( 2人已投票,[高质量] )
分享:
31.3K

Android的ListView相信大家很是熟悉,用起来好复杂,生产效率有些低,当然,大家也许习惯了。
不过还是有问题的,应该是设计上的问题,当然,ios 也是这种设计。很奇怪为什么这么设计。
所以去看了下源码,瞬间感觉整个人都不好了,好多行呀,有必要这么多吗?
所以从其他地方移植了一个过来,顺带把 GridView 也实现了,代码很少。
大家也可以从中解放下思维,从繁琐的 Android 思维中解放出来,用心体会简洁的魅力。

当然,如果你会喜欢的话,也请在 github Star 一下,并传播给其他人,还有什么比提高工作效率更棒呢。
另外:github 上其他的项目里也有许多有趣的功能,如果你有兴趣,可以帮助移植到你喜欢的领域。

import java.util.ArrayList;
                    
import org.aisy.display.USprite;
import org.aisy.listoy.Listoy;
import org.aisy.listoy.ListoyEnum;
import org.aisy.scroller.ScrollerView;
                    
import android.content.Context;
import android.util.AttributeSet;
import android.widget.TextView;
                    
public class TestView extends USprite {
                    
  /**
   * @param context
   */
  public TestView(Context context) {
    super(context);
    init();
  }
                      
  private void init()
  {
    TextView tv = new TextView(getContext());
    tv.setText("source: https://github.com/ikCourage/aisy_android");
    addView(tv);
                        
    ArrayList<Object> arr = new ArrayList<Object>();
    for (int i = 0; i < 100; i++) {
      arr.add(i, "ITEM " + i);
    }
    //source: https://github.com/ikCourage/aisy_android
    Listoy listoy = new Listoy(getContext());
    //如果 item 数量比较多时,应设置为 ListoyEnum.MODE_SHOW(只实例化可显示区域的内容,并且参照 reSet 的重用)
    //如果 item 数量不多,则可以使用默认的 ListoyEnum.MODE_ALL(实例化全部),此时应手动设置 setRowColumn
    listoy.setMode(ListoyEnum.MODE_SHOW);
    listoy.setLayout(ListoyEnum.LAYOUT_VERTICAL);
    //每一项之间的间隔
    //listoy.setPadding(0);
    //多行一列
    //listoy.setRowColumn(arr.size(), 1);
    //三行三列
    //listoy.setRowColumn(3, 3);
    listoy.setItemRenderer(Item.class);
    listoy.setDataProvider(arr);
    //listoy.initializeView();
    listoy.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
    //addView(listoy);
                        
    ScrollerView scrollerView = new ScrollerView(getContext());
    scrollerView.addView(listoy);
    addView(scrollerView);
    //清空
    //ScrollerView.clear();
  }
                    
}


//Item.class

import java.util.List;
                 
import org.ais.event.TEvent;
import org.ais.interfaces.ITEvent;
import org.aisy.listoy.Listoy.ScrollF;
import org.aisy.listoy.ListoyItem;
                 
import android.content.Context;
import android.util.AttributeSet;
import android.view.Gravity;
import android.view.View;
import android.widget.TextView;
                 
public class Item extends ListoyItem implements ITEvent
{
                 
  /**
   * @param context
   */
  public Item(Context context) {
    super(context);
  }
                   
  @Override
  protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    super.onMeasure(MeasureSpec.makeMeasureSpec(MeasureSpec.getSize(widthMeasureSpec), MeasureSpec.EXACTLY), heightMeasureSpec);
  }
                   
  public void init(String name, int index, Object data)
  {
    super.init(name, index, data);
                     
    setBackgroundColor(0xAA6699FF);
    TextView tv = new TextView(getContext());
    tv.setGravity(Gravity.CENTER);
    tv.setTextColor(0xFFFFFFFF);
    tv.setText(itemInfo.toString());
    addView(tv, new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
                     
    //根据 xml 进行布局
    //View v = inflate(getContext(), R.layout.item, null);
    //addView(v);
                     
    TEvent.newTrigger(NAME + "ITEM", this);
  }
                   
  @Override
  public int reSet(ScrollF f, List<Object> arr, int length) {
    super.reSet(f, arr, length);
    if (index < length) {
      TextView tv = (TextView)getChildAt(0);
      tv.setText(String.valueOf(index));
    }
    return index;
  }
                   
  @Override
  public void triggerHandler(Object[] args) {
                     
  }
                   
}






头像

snowcoal
  • android
  • listoy

本文标签:

androidlistoy

收藏到我的私密空间

标题:Android 比ListView更有效率的Listoy

作者:柳岸花明

你暂未登录,请登录后才可收藏至您的私密空间 确认取消
雪炭网

键盘操作 更便捷 -雪炭网雪中送炭-乐趣无限

如果本站的内容有幸帮助到了您,建议您了解一下当页的广告内容哦,我们的进步离不开您的支持,Thank you~