所以,我的活动实现了 Runnable 并且在 run() 方法中我做了一些网络抓取和等等等等。但这与我的问题无关。我希望它运行一些抓取,然后用我得到的结果更新 ListView。在那个运行方法里面我有这个:
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();
}
在我的 arrayadapter 类中,我使用在我的 run() 方法中传播的 ArrayLists。我的自定义 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;
}
}
我只是忘记了什么吗?自从我不得不使用自定义列表视图以来已经有一段时间了。