所以,我的活動實現了Runnable,並且在run()方法中我做了一些網頁抓取和等等等等等等等等等等等等等等等等等。但是這並不意味着我的問題。我希望它運行一些刮擦,然後用我得到的結果更新ListView。內部的運行方法,我有這樣的:Android ArrayAdapter <String>沒有更新
myAL.notifyDataSetChanged();
但它似乎並沒有被更新我的ListView ...這是我的onCreate:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
loadingSiteDialog = new ProgressDialog(this);
loadingSiteDialog.setCancelable(false);
loadingSiteDialog.setMessage("Retrieving Data, Please Wait...");
loadingSiteDialog.show();
list = (ListView)findViewById(R.id.list);
myAL = new AdapterList(this,R.layout.mainlistlayout);
list.setAdapter(myAL);
list.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent, View view, int pos, long id) {
}
});
loading = true;
this.run();
}
Withing我使用的ArrayList我的一個ArrayAdapter類,我在我的run()方法中傳播。 我的自定義ArrayAdapter類:
public class AdapterList extends ArrayAdapter<String>{
public AdapterList(Context context, int textViewResourceId) {
super(context, textViewResourceId);
}
@Override
public View getView(int pos, View convertView, ViewGroup parent){
View v = convertView;
if(v == null){
LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.mainlistlayout, null);
}
TextView roomTV = (TextView)findViewById(R.id.roomTV);
roomTV.setText(rooms.get(pos));
TextView wTV = (TextView)findViewById(R.id.washersTV);
wTV.setText(washersAvailable.get(pos) + "/" + washersTotal.get(pos));
TextView dTV = (TextView)findViewById(R.id.dryersTV);
dTV.setText(dryersAvailable.get(pos) + "/" + dryersTotal.get(pos));
Log.i("CSUMB Laundy","Attempting to getView: " + convertView.toString());
return v;
}
}
我只是忘記了什麼嗎?它已經有一段時間了,因爲我不得不使用自定義列表視圖。
如何添加數據? – 2012-08-16 07:28:45
在getView中它使用了一個公共變量。也許我不完全明白notifyDataSetChanged的作用。 – Brandon 2012-08-16 07:40:38