• Android 滑动加载数据


    我们还得在代码中写上LinearLayout.LayoutParams.WRAP_CONTENT,这样的代码。这样动态加载就算是完成了,我们还是先看看代码吧:
    package com.ScrollListView;

    import android.app.ListActivity;
    import android.os.Bundle;
    import android.view.Gravity;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.AbsListView;
    import android.widget.BaseAdapter;
    import android.widget.LinearLayout;
    import android.widget.ProgressBar;
    import android.widget.TextView;
    import android.widget.AbsListView.OnScrollListener;

    public class EndLessActivity extends ListActivity implements OnScrollListener {

    Aleph0 adapter = new Aleph0();
    int mProgressStatus = 0;
    ProgressBar progressBar;
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    LinearLayout searchLayout = new LinearLayout(this);
    searchLayout.setOrientation(LinearLayout.HORIZONTAL);
    progressBar = new ProgressBar(this);
    progressBar.setPadding(0, 0, 15, 0);
    searchLayout.addView(progressBar,new LinearLayout.LayoutParams(
    LinearLayout.LayoutParams.WRAP_CONTENT,
    LinearLayout.LayoutParams.WRAP_CONTENT
    ));
    TextView textView = new TextView(this);
    textView.setText("加载中...");
    textView.setGravity(Gravity.CENTER_VERTICAL);
    searchLayout.addView(textView,new LinearLayout.LayoutParams(
    LinearLayout.LayoutParams.FILL_PARENT,
    LinearLayout.LayoutParams.FILL_PARENT
    ));
    searchLayout.setGravity(Gravity.CENTER);
    LinearLayout loadingLayout = new LinearLayout(this);
    loadingLayout.addView(searchLayout,new LinearLayout.LayoutParams(
    LinearLayout.LayoutParams.WRAP_CONTENT,
    LinearLayout.LayoutParams.WRAP_CONTENT
    ));
    loadingLayout.setGravity(Gravity.CENTER);
    getListView().addFooterView(loadingLayout);

    setListAdapter(adapter);
    getListView().setOnScrollListener(this);
    }

    public void onScroll(AbsListView view,
    int firstVisible, int visibleCount, int totalCount) {

    boolean loadMore = /* maybe add a padding */
    firstVisible + visibleCount >= totalCount;

    if(loadMore) {
    adapter.count += visibleCount; // or any other amount
    adapter.notifyDataSetChanged();
    }
    }

    public void onScrollStateChanged(AbsListView v, int s) { }

    class Aleph0 extends BaseAdapter {
    int count = 40; /* starting amount */

    public int getCount() { return count; }
    public Object getItem(int pos) { return pos; }
    public long getItemId(int pos) { return pos; }

    public View getView(int pos, View v, ViewGroup p) {
    TextView view = new TextView(EndLessActivity.this);
    view.setText("entry " + pos);
    return view;
    }
    }



    }

    listview下部是按钮控制:

    package com.ScrollListView;

    import android.app.ListActivity;
    import android.os.Bundle;
    import android.view.Gravity;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.AbsListView;
    import android.widget.BaseAdapter;
    import android.widget.Button;
    import android.widget.LinearLayout;
    import android.widget.ProgressBar;
    import android.widget.TextView;
    import android.widget.AbsListView.OnScrollListener;

    public class EndLessActivity extends ListActivity {

    Aleph0 adapter = new Aleph0();
    int mProgressStatus = 0;

    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    LinearLayout searchLayout = new LinearLayout(this);
    searchLayout.setOrientation(LinearLayout.HORIZONTAL);

    Button textView = new Button(this);
    textView.setText("加载中...");
    textView.setGravity(Gravity.CENTER_VERTICAL);
    searchLayout.addView(textView,new LinearLayout.LayoutParams(
    LinearLayout.LayoutParams.FILL_PARENT,
    LinearLayout.LayoutParams.FILL_PARENT
    ));
    searchLayout.setGravity(Gravity.CENTER);
    LinearLayout loadingLayout = new LinearLayout(this);
    loadingLayout.addView(searchLayout,new LinearLayout.LayoutParams(
    LinearLayout.LayoutParams.WRAP_CONTENT,
    LinearLayout.LayoutParams.WRAP_CONTENT
    ));
    loadingLayout.setGravity(Gravity.CENTER);
    getListView().addFooterView(loadingLayout);
    textView.setOnClickListener(new Button.OnClickListener()
    { @Override
    public void onClick(View v)
    {
    adapter.count += 10;
    adapter.notifyDataSetChanged();
    }
    });


    setListAdapter(adapter);
    //getListView().setOnScrollListener(this);
    }

    /*public void onScroll(AbsListView view,
    int firstVisible, int visibleCount, int totalCount) {

    boolean loadMore =
    firstVisible + visibleCount >= totalCount;

    if(loadMore) {
    adapter.count += visibleCount;
    adapter.notifyDataSetChanged();
    }
    }
    */

    public void onScrollStateChanged(AbsListView v, int s) { }

    class Aleph0 extends BaseAdapter {
    int count = 40; /* starting amount */

    public int getCount() { return count; }
    public Object getItem(int pos) { return pos; }
    public long getItemId(int pos) { return pos; }

    public View getView(int pos, View v, ViewGroup p) {
    TextView view = new TextView(EndLessActivity.this);
    view.setText("entry " + pos);
    return view;
    }
    }



    }

    转自:http://javajeye.iteye.com/blog/789761

  • 相关阅读:
    [CALayer release]: message sent to deallocated instance 的原因
    Java格式化打印及数字格式化
    Java断言关键字
    Java数值使用下划线
    Java数组复制
    .net你必须知道的事儿 1.5
    .net你必须知道的事儿 1.4
    .net你必须知道的事儿 1.3
    .net你必须知道的事儿 1.2
    .net你必须知道的事儿 1.1
  • 原文地址:https://www.cnblogs.com/shanzei/p/2414118.html
Copyright © 2020-2023  润新知