我想构建某种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);
}


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

最佳答案

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

您需要创建以下内容:


ListItem的布局:这表示列表中的单行。您可以通过为此创建单独的布局来自定义它。说您创建:listitem_post.xml
适配器:通过扩展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;
}

活动:在您的xml活动代码中,插入一个ListView,例如listview_posts。在活动的Java文件中,将步骤2中创建的适配器设置为onCreate()方法中的listview_posts。

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



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

Follow this tutorial

07-27 19:17