我想要实现的是,我有一个ArrayList< String > data = new ArrayList< String >();
包含从 1 到 100 的值。现在,如果我想在 scrollView 中显示这些数据,那么我将编写以下代码:
for(int i=0; i<data.size(); i++) {
View v = getLayoutInflator.inflate(R.layout.mycontainer, null);
TextView tv = (TextView)v.findViewById(R.id.tv1);
tv.setText(data.get(i));
layout.addView(v);
}
上面的代码会显示数据,但是显示所有数据可能需要一些时间。我想要做的是,我想在每个循环中更新滚动视图,并在将文本视图添加到布局后显示每一行。
请查看此应用程序以供参考。
这是我正在做的测试代码,以实现我想要的。请看一看:
ListView list = (ListView)findViewById(R.id.listView1);
ListAdapter adapter = new ListAdapter(this);
list.setAdapter(adapter);
for(int i=1; i<=10; i++) {
adapter.setData(String.valueOf(i));
adapter.notifyDataSetChanged();
}
我的 ListAdapter 的代码:
public class ListAdapter extends BaseAdapter {
private Context context;
private int count;
private ArrayList<String> data = new ArrayList<String>();
public ListAdapter(Context context) {
this.context = context;
}
@Override
public int getCount() {
return count;
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
public void setData(String str) {
data.add(str);
count = data.size();
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if(convertView == null) {
LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.test_layout, parent, false);
holder = new ViewHolder();
holder.tv = (TextView)convertView.findViewById(R.id.textView1);
convertView.setTag(holder);
} else {
holder = (ViewHolder)convertView.getTag();
}
try {
for(int i=0; i<=data.size(); i++) {
holder.tv.setText(data.get(i));
}
} catch (Exception e) {
e.printStackTrace();
}
return convertView;
}
static class ViewHolder {
TextView tv;
}
}
提前感谢阿布舍克