2013-09-01 76 views
0

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

在此先感谢 阿布舍克

+3

为什么不使用'ListView'来自动为你做这件事(重新使用视图,并且它会在用户滚动时添加视图),而不是使用ScrollView并使用如此大量的视图填充它? – gunar

+0

我在说的观点是在应用程序清理大师https://play.google.com/store/apps/details?id=com.cleanmaster.mguard这种应用程序加载数据的方式我想要的是同样的东西 –

+0

而不是动态创建文本视图,你可以有一个列表视图,它会动态地添加所有的值。只要设置一个适配器到列表视图 – Ritaban

回答

0

清洁大师(清洁)

什么这个程序是使用的是一个常规的L​​istView。

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

什么这个程序是这样做的:

的应用对象在运行时被读取。这些应用程序对象一个接一个地传递给适配器(而不是将它们作为一个长列表传递),并且在添加每个对象后调用它们。

+0

我已经尝试过你的方法并将数据逐个传递给BaseAdapter,但它没用。它仍然不是一个接一个地加载整个数据。 –

+0

@Abhishek你可以在上面的问题中发布你的适配器和活动的代码,并给我留言?我会看看它。谢谢。 – Vikram

+0

我已更新代码请看看..谢谢.. –