所以,我的活动实现了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