1

我想构建某种 twitter 应用程序。在 DashboardActivity 中,每次单击“发布”按钮时,我都需要添加一个状态框。我的仪表板 xml 如下所示:

<RelativeLayout>
       <LinearLayout></LinearLayout>  -->header layout
       <LinearLayout></LinearLayout>  -->some layout with some titles
        <LinearLayout></LinearLayout> --> post status layout with the post button
       <LinearLayout></LinearLayout>  --> layout with a horizontal rule
       <LinearLayout></LinearLayout>  --> this is the layout with id "rootStatusBox" where i want to add the status box
</RelativeLayout>

现在,我希望能够在每次单击“发布”按钮时在水平规则布局之后添加一个新的 LinearLayout。我在我的 DashboardActivity 中尝试了这样的事情:

postStatus.setOnClickListener(new View.OnClickListener() {

        public void onClick(View view) {
               addUserStatusBox(firstname,lastname,status);

        }});

addUserStatusBox() 看起来像这样:

 public void addUserStatusBox(String firstname, String lastname,String status) {        
    LinearLayout rootStatusBox = (LinearLayout)findViewById(R.id.rootStatusBox);

    LinearLayout userStatusBox = new LinearLayout(this);
    userStatusBox.setOrientation(LinearLayout.HORIZONTAL);
    userStatusBox.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
    LinearLayout.LayoutParams layout = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
    layout.setMargins(0, 300, 0, 0); // llp.setMargins(left, top, right, bottom);
    userStatusBox.setLayoutParams(layout);

    TextView friendName = new TextView(this);
    TextView friendStatus = new TextView(this);
    TextView dataCrearePost = new TextView(this);

     friendName.setText(firstname+ " " + lastname);
     friendName.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
     friendName.setTextSize(10);
     friendName.setTypeface(null, Typeface.BOLD);

     friendStatus.setText(status);
     friendStatus.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
     LinearLayout.LayoutParams llp = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
     llp.setMargins(-70, 20, 0, 0); // llp.setMargins(left, top, right, bottom);
     friendStatus.setLayoutParams(llp);
     friendStatus.setTextSize(10);

     userStatusBox.addView(friendName);
     userStatusBox.addView(friendStatus);

     rootStatusBox.addView(userStatusBox);
}

这仅在我添加状态时第一次起作用。我不知道如何在水平规则布局之后添加更多帖子并且能够在我的新帖子下方看到旧帖子。我会很感激帮助。谢谢

4

1 回答 1

1

为此,我将使用自定义列表视图。

您需要创建以下内容:

  1. ListItem 的布局:这表示列表中的单行。您可以通过为此创建单独的布局来自定义它。假设您创建:listitem_post.xml

  2. 适配器:通过扩展 BaseAdapter 类(例如:PostsAdapter.java)来编写适配器。填写所有被覆盖的方法。最重要的是,在 getView() 方法中,膨胀 post_listitem。将其分配给 convertView 对象(作为参数传入)。

    public View getView(int index, View convertView, ViewGroup parent) {
        if (convertView == null) {
            LayoutInflater inflater = LayoutInflater.from(parent.getContext());
            convertView = inflater.inflate(R.layout.listitem_post, parent, false);
        }
    //Code other parts
    return convertView;
    }
    
  3. 活动:在您的活动 xml 代码中,插入一个 ListView 说listview_posts。在活动的 java 文件中,为 onCreate() 方法中的 listview_posts 设置在步骤 2 中创建的适配器。

        PostsAdapter postsListAdapter = new PostsAdapter();
        ListView postsListView = (ListView) this.findViewById(R.id.listview_posts);
        postsListView.setAdapter(postsListAdapter);
    

这就是您指定每个列表元素是listitem_post的方式。

按照本教程

于 2013-06-18T09:40:52.277 回答