我正在尝试使用列表视图和表格视图开发facebook类型的Feed。每行都有列表视图中包含注释的Feed帖子。我将feed的数据对象存储在数组列表中。我的数据对象结构如下
class FeedPost{
String username;
String imageUrl;
String feedpostText;
ArrayList<Comment> comments;}
评论类看起来像这样
class Comment{
String imageUrl;
String username;
String Text;
}
现在我将使用itemview表格布局显示数据。这就像下面这样。
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/FeedTableLayout"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<RelativeLayout
android:id="@+id/feed_container"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<TextView android:id="@+id/FeedPostusername" android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
<TextView android:id="@+id/FeedPostText" android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
</RelativeLayout>
</TableLayout>
上面的代码块是listview中的项目布局。这显示了主要的Feed内容。现在显示对Feed的评论。我有另一种不同设计和图像的布局。样本布局
<RelativeLayout
android:id="@+id/feed_container"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<ImageView android:id="@+id/CommentPic" android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
<TextView android:id="@+id/Commentusername" android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
<TextView android:id="@+id/CommentText" android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
</RelativeLayout>
有关Feed和评论的所有数据都存储在主要的arraylist
中ArrayList<FeedPost> TotalFeed = new ArrayList<FeedPost>();
我使用自定义列表适配器来显示总Feed的arraylist的内容。由于每个Feed都有各种注释计数,我使用循环通过膨胀注释布局手动将注释添加到表格布局。
所以适配器中的getview()就像这样
public View getView(final int position, View convertView, ViewGroup parent) {
feedItem = FeedItems.get(position);
convertView = layoutInflater.inflate(R.layout.feed_main, null);
TableLayout mainFeedLayout = (TableLayout) convertView
.findViewById(R.id.blogFeedTableLayout);
TextView displayName = (TextView) convertView
.findViewById(R.id.feed_username);
TextView description = (TextView) convertView
.findViewById(R.id.comment_text);
// Set the text to the texview
.
.
.
// Adding comments to the feed
for (int i = 0; i < feedItem.feedComments.size(); i++) {
mainFeedLayout .addView(addComment(
convertView, feedItem.feedComments.get(i)));
}
}
addcomment是用于将注释添加到Feed
的函数private View addComment(View view, Comment comment) {
View commentLayout = View.inflate(mContext, R.layout.comment, null);
ImageView pic = (ImageView) commentLayout
.findViewById(R.id.pic);
TextView userName = (TextView) commentLayout
.findViewById(R.id.comment_username);
TextView commentText = (TextView) commentLayout
}
因此,要在列表视图中显示单个Feed,我会检查每个Feed项以查看注释并在Feed中显示它们。这真的很痛苦而且很慢。
我尝试使用静态支架进行布局,而不是每次都给它们充气。再说那也没有用。如果有多个不同的视图,那么我会尝试commonsguy的“SackOfViewsAdapter”。但实际上并没有不同的观点。
我认为facebook使用webview并呈现html以显示用户的提要。使用android原生布局和代码做同样的事情的最佳方法是什么。你能帮我建议用来展示这种复杂数据的最佳方法吗?