android 瀑布流简单例子

main.xml

<?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)