动态显示Android中ScrollView的内容

时间:2013-09-01 18:37:48

标签: android dynamic-data android-scrollview

我想要实现的是,我的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;
}
}

提前致谢 阿布舍克巴克

1 个答案:

答案 0 :(得分:0)

  

清洁大师(清洁工)

这个应用程序使用的是常规ListView。

  

我无法弄清楚他们是如何显示单身数据的   单元格而不是一次显示所有单元格的数据

此应用正在做什么:

在运行时获取apps对象。这些app对象逐个传递给适配器(而不是将它们作为一个长列表传递),因为它们可用,并且在添加每个对象后调用adapter.notifyDataSetChanged()