LISTVIEW NOTIFY

public class ListViewStressTest extends ListActivity { 
   
ArrayAdapter<String> adapter; 
   
ListView list; 
   
AsyncTask<Void, String, Void> task; 
 
   
@Override 
   
public void onCreate(Bundle savedInstanceState) { 
       
super.onCreate(savedInstanceState); 
 
       
this.adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1); 
       
this.list = this.getListView(); 
 
       
this.list.setAdapter(this.adapter); 
 
       
this.task = new AsyncTask<Void, String, Void>() { 
           
Random r = new Random(); 
           
int[] delete; 
           
volatile boolean scroll = false; 
 
           
@Override 
           
protected void onProgressUpdate(String... values) { 
               
if(scroll) { 
                    scroll
= false;                      doScroll(); 
                   
return; 
               
} 
 
               
if(values == null) { 
                    doDelete
(); 
                   
return; 
               
} 
 
                doUpdate
(values); 
 
               
if(ListViewStressTest.this.adapter.getCount() > 5000) { 
                   
ListViewStressTest.this.adapter.clear(); 
               
} 
           
} 
 
           
private void doScroll() { 
               
if(ListViewStressTest.this.adapter.getCount() == 0) { 
                   
return; 
               
} 
 
               
int n = r.nextInt(ListViewStressTest.this.adapter.getCount()); 
               
ListViewStressTest.this.list.setSelection(n); 
           
} 
 
           
private void doDelete() { 
               
int[] d; 
               
synchronized(this) { 
                    d
= this.delete; 
               
} 
               
if(d == null) { 
                   
return; 
               
} 
               
for(int i = 0 ; i < d.length ; i++) { 
                   
int index = d[i]; 
                   
if(index >= 0 && index < ListViewStressTest.this.adapter.getCount()) { 
                       
ListViewStressTest.this.adapter.remove(ListViewStressTest.this.adapter.getItem(index)); 
                   
} 
               
} 
           
} 
 
           
private void doUpdate(String... values) { 
               
for(int i = 0 ; i < values.length ; i++) { 
                   
ListViewStressTest.this.adapter.add(values[i]); 
               
} 
           
} 
 
           
private void updateList() { 
               
int number = r.nextInt(30) + 1; 
               
String[] strings = new String[number]; 
 
               
for(int i = 0 ; i < number ; i++) { 
                    strings
[i] = Long.toString(r.nextLong()); 
               
} 
 
               
this.publishProgress(strings); 
           
} 
 
           
private void deleteFromList() { 
               
int number = r.nextInt(20) + 1; 
               
int[] toDelete = new int[number]; 
 
               
for(int i = 0 ; i < number ; i++) { 
                   
int num = ListViewStressTest.this.adapter.getCount(); 
                   
if(num < 2) { 
                       
break; 
                   
} 
                    toDelete
[i] = r.nextInt(num); 
               
} 
 
               
synchronized(this) { 
                   
this.delete = toDelete; 
               
} 
 
               
this.publishProgress(null); 
           
} 
 
           
private void scrollSomewhere() { 
               
this.scroll = true; 
               
this.publishProgress(null); 
           
} 
 
           
@Override 
           
protected Void doInBackground(Void... params) { 
               
while(true) { 
                   
int what = r.nextInt(3); 
 
                   
switch(what) { 
                       
case 0: 
                            updateList
(); 
                           
break; 
                       
case 1: 
                            deleteFromList
(); 
                           
break; 
                       
case 2:                              scrollSomewhere(); 
                           
break; 
                   
} 
 
                   
try { 
                       
Thread.sleep(0); 
                   
} catch(InterruptedException e) { 
                       
// TODO Auto-generated catch block 
                        e
.printStackTrace(); 
                   
} 
               
} 
           
} 
 
       
}; 
 
       
this.task.execute(null); 
   
} 
} 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值