android--------listView 分段加载数据

来源:互联网 发布:怎样设计淘宝店铺 编辑:程序博客网 时间:2024/05/16 16:17

功能:每次加载数据5条,然后往下加载

定义适配器:

public class MusicAdapter extends BaseAdapter {



Context mContext;
LayoutInflater mInflater;
int mCount;


List<String> mMusicList;// = new ArrayList<String>();


public MusicAdapter(Context c, List<String> musicList) {


this.mContext = c;
mInflater = LayoutInflater.from(mContext);
this.mMusicList = musicList;


}


public void setData(List<String> musicList) {


// TODO Auto-generated method stub
this.mMusicList = musicList;
this.notifyDataSetChanged();
}


@Override
public int getCount() {


// TODO Auto-generated method stub
if (mMusicList == null)
return 0;
else
return mMusicList.size();
}


@Override
public Object getItem(int position) {


// TODO Auto-generated method stub


return position;
}


@Override
public long getItemId(int position) {


// TODO Auto-generated method stub


return position;
}


@Override
public View getView(int position, View convertView, ViewGroup parent) {


// TODO Auto-generated method stub
ViewHolder viewHolder = null;
if (convertView == null) {
convertView = this.mInflater.inflate(R.layout.list_items, null);
viewHolder = new ViewHolder();
viewHolder.mImageView = (ImageView) convertView.findViewById(R.id.musicimageView);
viewHolder.mTextViewName = (TextView) convertView.findViewById(R.id.musicName);
viewHolder.mTextViewAlbum = (TextView) convertView.findViewById(R.id.musicAlbum);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}


viewHolder.mImageView
.setImageBitmap(BitmapFactory.decodeResource(mContext.getResources(), R.drawable.music));


viewHolder.mTextViewName.setText((position + 1) + ". " + mMusicList.get(position) + "Muisic");
viewHolder.mTextViewName.setTextSize(30);


viewHolder.mTextViewAlbum.setText("Album..........");
viewHolder.mTextViewAlbum.setTextSize(25);
return convertView;
}


private class ViewHolder {


private ImageView mImageView;
private TextView mTextViewName;
private TextView mTextViewAlbum;
}


public void addItem(String item) {


;// mMusicList.add(item);
}
}


mainActivity:

private void initMusicView() {


// TODO Auto-generated method stub
mMusicListView = (ListView) this.findViewById(R.id.listView);
mMusicAdapter = new MusicAdapter(this, mMusicList);
mMusicListView.setAdapter(mMusicAdapter);


mMusicListView.setOnItemSelectedListener(new OnItemSelectedListener() {


@Override
public void onItemSelected(AdapterView<?> arg0, View arg1, int id, long arg3) {


// TODO Auto-generated method stub
Log.i(TAG, "...onItemSelected...id:" + id);
}


@Override
public void onNothingSelected(AdapterView<?> arg0) {


// TODO Auto-generated method stub


}
});
mMusicListView.setOnItemClickListener(new OnItemClickListener() {


@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int id, long arg3) {


// TODO Auto-generated method stub


Log.i(TAG, "...setOnItemClickListener...id:" + id);
}


});
loadMusicThread = Executors.newSingleThreadScheduledExecutor();
loadMusicThread.submit(new loadMusicTask());
musicHandler = new Handler() {


@Override
public void handleMessage(Message msg) {


// TODO Auto-generated method stub
Log.i(TAG, "musicHandler-> handleMessage...");
if (msg.what == 0x1) {
List<String> data = (List<String>) msg.obj;
mMusicAdapter.setData(data);
mMusicListView.requestFocus();


/* continous load data */
if (data.size() != 60) {
mMusicListView.setSelection(data.size() - 1);
loadMusicThread.submit(new loadMusicTask());
}
else {
mMusicListView.setSelection(0);
}

}
super.handleMessage(msg);


}
};
}


class loadMusicTask implements Runnable {


@Override
public void run() {


// TODO Auto-generated method stub
// load
// data://这里放你网络数据请求的方法,我在这里用线程休眠5秒方法来处理


try {
List<String> temp = loadData();
Message msg = new Message();
msg.what = 0x1;
msg.obj = temp;
musicHandler.sendMessage(msg);
Thread.sleep(5 * 1000);


} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}


}


}


public List<String> loadData() {


int size = mMusicList.size();
for (int i = 1; i < 6; i++) {
String item = String.valueOf(size + i);
mMusicList.add(item);
// mMusicAdapter.addItem(item);
}
return mMusicList;


}

原创粉丝点击