我想要实现的是,我的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);
}
上面的代码将显示数据,但显示所有数据可能需要一些时间。我想要做的是,我想在每个循环更新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;
}
}
提前致谢 阿布舍克巴克
答案 0 :(得分:0)
清洁大师(清洁工)
这个应用程序使用的是常规ListView。
我无法弄清楚他们是如何显示单身数据的 单元格而不是一次显示所有单元格的数据
此应用正在做什么:
在运行时获取apps对象。这些app对象逐个传递给适配器(而不是将它们作为一个长列表传递),因为它们可用,并且在添加每个对象后调用adapter.notifyDataSetChanged()
。