android 瀑布流

简介: 引用:http://www.cnblogs.com/oldfeel/archive/2012/06/01/2530584.html ArcHFSearchResult.

引用:http://www.cnblogs.com/oldfeel/archive/2012/06/01/2530584.html

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/arc_hf_search_result"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <LinearLayout
        android:id="@+id/arc_hf_search_item"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >
    </LinearLayout>

</ScrollView>
复制代码

ArcHFSearchResult.java

复制代码
public class ArcHFSearchResult extends Activity {
    protected static final String TAG = "ArcHFSearchResult";
    private ScrollView svResult;
    private LinearLayout llItem;
    private String[] arrayStr;
    private int pageCount = 0;
    private int resultCount = 10000;
    private int eachCount = 3000;
    private View view;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        svResult = (ScrollView) findViewById(R.id.arc_hf_search_result);
        llItem = (LinearLayout) findViewById(R.id.arc_hf_search_item);
        svResult.setOnTouchListener(svListener);
        view = svResult.getChildAt(0);
        // 将要显示的10000条数据
        arrayStr = new String[resultCount];
        for (int i = 0; i < resultCount; i++) {
            arrayStr[i] = i + "";
        }
        // 第一次添加数据,每次添加3000条。
        AddResult();
    }

    class svTouchListener implements OnTouchListener {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                break;
            case MotionEvent.ACTION_UP:
                // 如果触发监听事件,并且有内容,并且ScrollView已经拉到底部,加载一次数据
                if (svListener != null
                        && view != null
                        && view.getMeasuredHeight() - 20 <= svResult
                                .getScrollY() + svResult.getHeight()) {
                    AddResult();
                }
                break;
            default:
                break;
            }
            return false;
        }
    }

    svTouchListener svListener = new svTouchListener();

    /**
     * 添加结果
     */
    protected void AddResult() {
        if (eachCount * pageCount < resultCount) {
            for (int i = 0; i < eachCount; i++) {
                int k = i + eachCount * pageCount;
                if (k >= resultCount)
                    break;
                TextView tv = new TextView(this);
                tv.setText("hello world" + arrayStr[k]);
                llItem.addView(tv);
            }
            pageCount++;
        }
    }
}
相关文章
|
缓存 Android开发
Android RecyclerView 实现瀑布流
Android RecyclerView 实现瀑布流
|
缓存 Java Android开发
Android使用LruCache、DiskLruCache实现图片缓存+图片瀑布流
**本文仅用于学习利用LruCache、DiskLruCache图片缓存策略、实现瀑布流和Matix查看大图缩放移动等功能,如果想用到项目中,建议用更成熟的框架,如[glide]
167 0
|
Android开发 数据格式 XML
Android RecyclerView(瀑布流)水平/垂直方向分割线
 Android RecyclerView(瀑布流)水平/垂直方向分割线 Android RecyclerView不像过去的ListView那样随意的设置水平方向的分割线,如果要实现RecyclerView的水平/垂直分割线,则需要继承自RecyclerView.ItemDecoration重写getItemOffsets方法,从而增加水平/垂直分割线。
1616 0
|
7天前
|
编解码 Java Android开发
通义灵码:在安卓开发中提升工作效率的真实应用案例
本文介绍了通义灵码在安卓开发中的应用。作为一名97年的聋人开发者,我在2024年Google Gemma竞赛中获得了冠军,拿下了很多项目竞赛奖励,通义灵码成为我的得力助手。文章详细展示了如何安装通义灵码插件,并通过多个实例说明其在适配国际语言、多种分辨率、业务逻辑开发和编程语言转换等方面的应用,显著提高了开发效率和准确性。