Facebook喜欢饲料视图与listview和表视图android

时间:2012-01-02 06:12:49

标签: android listview tableview listviewitem

我正在尝试使用列表视图和表格视图开发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原生布局和代码做同样的事情的最佳方法是什么。你能帮我建议用来展示这种复杂数据的最佳方法吗?

0 个答案:

没有答案