我想要实现的是,我有一个ArrayList< String > data = new ArrayList< String >();
,它包含1到100的值。现在,如果我想在scrollView中显示此数据,那么我将写入以下内容代码:动态显示Android中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);
}
上述代码将显示数据,但显示所有数据可能需要一些时间。我想要做的是,我想在每个循环更新scrollView,并在textview添加到布局后显示每一行。
请查阅this app以供参考。
这是我正在做的测试代码,以实现我想要的。请看看:
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;
}
}
在此先感谢 阿布舍克
为什么不使用'ListView'来自动为你做这件事(重新使用视图,并且它会在用户滚动时添加视图),而不是使用ScrollView并使用如此大量的视图填充它? – gunar
我在说的观点是在应用程序清理大师https://play.google.com/store/apps/details?id=com.cleanmaster.mguard这种应用程序加载数据的方式我想要的是同样的东西 –
而不是动态创建文本视图,你可以有一个列表视图,它会动态地添加所有的值。只要设置一个适配器到列表视图 – Ritaban