直奔主题~!
结构如图:
main.xml代码:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> </LinearLayout>
showcontent.xml代码:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/linearLayout1" android:gravity="center"> <ImageView android:layout_width="100dip" android:layout_height="100dip" android:src="@drawable/icon" android:id="@+id/iv"></ImageView> <TextView android:text="今晚打老虎" android:id="@+id/tv" android:layout_width="wrap_content" android:layout_height="wrap_content" ></TextView> </LinearLayout> </LinearLayout>
Control_ListView_LoadingActivity.java代码:
public class Control_ListView_LoadingActivity extends ListActivity implements OnScrollListener { private LayoutParams layoutParams1 = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); private LayoutParams layoutParams2 = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.FILL_PARENT); private ProgressBar pb; private TextView tv; private int lastItem = 0; mylistener adapter; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // setContentView(R.layout.main); Layout_initialize(); } public void Layout_initialize() { LinearLayout ll1 = new LinearLayout( Control_ListView_LoadingActivity.this); pb = new ProgressBar(Control_ListView_LoadingActivity.this); tv = new TextView(Control_ListView_LoadingActivity.this); pb.setPadding(0, 0, 15, 0); ll1.addView(pb, layoutParams1); tv.setText("正在加载..."); tv.setGravity(Gravity.CENTER_HORIZONTAL); ll1.addView(tv, layoutParams2); ll1.setGravity(Gravity.CENTER); LinearLayout loadingLayout = new LinearLayout(this); loadingLayout.addView(ll1, layoutParams1); loadingLayout.setGravity(Gravity.CENTER); ListView listView = getListView(); listView.addFooterView(loadingLayout); registerForContextMenu(listView); adapter = new mylistener(Control_ListView_LoadingActivity.this); setListAdapter(adapter); listView.setOnScrollListener(Control_ListView_LoadingActivity.this); } Handler hd = new Handler() { @Override public void handleMessage(Message msg) { // TODO Auto-generated method stub // super.handleMessage(msg); if (msg.what == 123) { adapter.notifyDataSetChanged(); // setListAdapter(adapter); } } }; public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { // TODO Auto-generated method stub lastItem = firstVisibleItem + visibleItemCount - 1; } public void onScrollStateChanged(AbsListView view, int scrollState) { // TODO Auto-generated method stub // 这里并没有执行 ,所以可以放到onscroll里进行解决,原因暂定 if(scrollState==OnScrollListener.SCROLL_STATE_IDLE) { Toast.makeText(Control_ListView_LoadingActivity.this, "没有调用", Toast.LENGTH_LONG).show(); } if (lastItem == adapter.count) { adapter.count += 5; Message msg = hd.obtainMessage(123); hd.sendMessage(msg); } } class mylistener extends BaseAdapter { Context ct; int count = 5; public mylistener(Context ct) { this.ct = ct; } public int getCount() { // TODO Auto-generated method stub return count; } public Object getItem(int position) { // TODO Auto-generated method stub return position; } public long getItemId(int position) { // TODO Auto-generated method stub return position; } public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub // return null; LayoutInflater lif = getLayoutInflater(); convertView = lif.inflate(R.layout.showcontent, null); return convertView; } } }