ListActivity onScroll永远不会被触发

时间:2013-12-25 18:21:09

标签: android listactivity onscrolllistener

我有一个ListActivity来实现OnScrollListener。不幸的是,方法onScrollonScrollStateChanged永远不会被解雇。 我绝对没有想法为什么。数据显示正确。我可以在我的视图中滚动...你看到了问题吗?

package bc.qz.client.android.activity;

import java.util.ArrayList;
import java.util.List;
import java.util.UUID;

import android.app.ListActivity;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.AbsListView;
import android.widget.AbsListView.OnScrollListener;
import bc.qz.client.android.R;
import bc.qz.client.android.adapter.ScoreListAdapter;
import bc.qz.client.android.proxy.RemoteServletCaller;
import de.bc.qz.business.Score;

public class ScoreActivity extends ListActivity implements OnScrollListener{

    private SharedPreferences mSharedPreferences;
    private RemoteServletCaller mRemoteServletCaller;
    private Runnable lViewScoreRunnable;
    private String mUuid;
    private String mUsername;
    private ProgressDialog mProgressDialog = null;
    private ScoreListAdapter mScoreListAdapter;

    List<Score> mAllScore = new ArrayList<Score>();

    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);

        mRemoteServletCaller = new RemoteServletCaller();

        mSharedPreferences = this.getSharedPreferences(
                "de.bc.qz.client.sharedpreferences", Context.MODE_PRIVATE);
        mUuid = mSharedPreferences.getString("uuid", null);
        mUsername = mSharedPreferences.getString("user", null);

        mScoreListAdapter = new ScoreListAdapter(this, mAllScore);
        setListAdapter(mScoreListAdapter);

        lViewScoreRunnable = new Runnable() {
            @Override
            public void run() {
                loadAllScore(mUsername, mUuid);
            }
        };

        Thread thread = new Thread(null, lViewScoreRunnable,
                "MagentoBackground");
        thread.start();
        mProgressDialog = ProgressDialog.show(ScoreActivity.this,
                "Bitte warten...", "Lade Highscore...", true);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.activity_score_menu, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case R.id.goToTop:
            return true;
        case R.id.goToBottom:
            return true;
        case R.id.goToMine:
            return true;
        default:
            return super.onOptionsItemSelected(item);
        }
    }

    @Override
    public void onScroll(AbsListView view, int firstVisibleItem,
            int visibleItemCount, int totalItemCount) {
        System.out.println("onScroll");
    }

    @Override
    public void onScrollStateChanged(AbsListView view, int scrollState) {
        System.out.println("onScrollStateChanged");
    }

    private void loadAllScore(String pUsername, String pUuid) {
        try {
            if (null == mUuid || mUsername == null) {
                mUuid = UUID.randomUUID().toString();
                mSharedPreferences.edit().putString("uuid", mUuid).commit();
                mAllScore.addAll(mRemoteServletCaller.getAllScore(1, 50));
            } else {
                mAllScore.addAll(mRemoteServletCaller.getAllScore(mUsername,
                        mUuid));
            }
        } catch (Exception e) {
            return;
        }
        runOnUiThread(returnRes);
    }

    private Runnable returnRes = new Runnable() {

        @Override
        public void run() {
            if (mAllScore != null && mAllScore.size() > 0) {
                mScoreListAdapter.notifyDataSetChanged();
                for (int i = 0, N = mAllScore.size(); i < N; i++)
                    mScoreListAdapter.add(mAllScore.get(i));
            }
            mProgressDialog.dismiss();
        }
    };
}

1 个答案:

答案 0 :(得分:1)

getListView().setOnScrollListener(this);