0

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

提前感谢阿布舍克

4

1 回答 1

0

清洁大师(清洁工)

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

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

这个应用程序在做什么:

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

于 2013-09-01T19:24:29.963 回答