我是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;
}
的问题在于向上或向下滚动时非常迟钝。我甚至尝试过延迟加载项目,但它也没有用。
答案 0 :(得分:3)
您确实需要重构代码以不添加200个文本视图。
您可以做的是用一个listView替换这200个textviews。这会动态添加和回收子视图。因此,即使您有200个条目,该应用程序也只会占用需要在屏幕上绘制的内容。
请参阅listview tutorial。