添加每个视图后强制布局刷新

时间:2014-03-06 18:32:17

标签: android

我是android新手,我想在LinearLayout中添加一长串textViews(约200篇文章视图)。

如您所知,向布局添加大型视图会导致活动冻结,直到添加所有文本视图。我想在每个addview之后刷新布局并显示添加到布局的新textview。我已经测试了我想到的所有内容,并且我已经搜索了所有网页以获得答案,我知道我必须使用线程,但没有一个线程适用于我。

我使用过ListView,但它太慢了,因为当它们不在视野时需要让很多控件不可见。

如何在每个视图后强制刷新?

修改
这是大约100次充气的布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:pixlui="http://schemas.android.com/apk/com.neopixl.pixlui"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="20dp" >

<com.neopixl.pixlui.components.textview.TextView
    android:id="@+id/itemTitle1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="right"
    android:text=""
    android:textColor="#58595b"
    android:textSize="@dimen/details_title_font_size"
    pixlui:typeface="font.ttf" />

<JustifiedTextView
    android:id="@+id/itemText1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text=""
    android:textColor="#58595b"
    android:textSize="@dimen/details_font_size"
    android:lineSpacingMultiplier="2"/>
</LinearLayout>

这是getView的{​​{1}}方法:

BaseAdapter

这个public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder = null; if (convertView == null) { convertView = mInflater.inflate(R.layout.rowitemview, null); holder = new ViewHolder(); holder.title1 = (TextView) ((LinearLayout)convertView).getChildAt(0); holder.text1 = (JustifiedTextView) ((LinearLayout)convertView).getChildAt(1); holder.text1.SetTextAlign(Align.RIGHT); holder.text1.setTypeface(font); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } holder.title1.setText(getItem(position).getTitle()); holder.text1.setText(getItem(position).getDesc()); return convertView; } 的问题在于向上或向下滚动时非常迟钝。我甚至尝试过延迟加载项目,但它也没有用。

1 个答案:

答案 0 :(得分:3)

您确实需要重构代码以不添加200个文本视图。

您可以做的是用一个listView替换这200个textviews。这会动态添加和回收子视图。因此,即使您有200个条目,该应用程序也只会占用需要在屏幕上绘制的内容。

请参阅listview tutorial