无法以编程方式设置列表视图中按钮的可见性

Not able to set the visibility of a button inside a listview programmatically

我正在尝试根据列表视图中的特定条件设置按钮的可见性。

上下文:列表视图具有响应 post 的参数。它包含响应的标题、描述等以及投票 button.Only 作为 parent post 所有者的用户应该能够看到该按钮,以便他可以投票回复。

我试图设置按钮可见性的代码的 java 部分:

adapter= new SimpleAdapter(MainActivity.this, list,
                    R.layout.response_list, columns, mapping);  //response_list is the xml layout file where response parameters are defined.
ListView listView = (ListView) findViewById(R.id.listallresponses); //listallresponses is the id of response_list layout file.

if (!parent.equals(userLoggedin)) { //"parent" is the userid of the parent post. "userLoggedin" is the current user who is viewing the parent post and its responses.
    LayoutInflater li = LayoutInflater.from(this);
    View v = li.inflate(R.layout.response_list, null, false);
    Button upVoteButton = (Button) v
                        .findViewById(R.id.upvoteButton); //upvoteButton is the one whose visibility we are talking about.
    upVoteButton.setVisibility(View.GONE);
}

listView.setAdapter(adapter);

我定义响应参数的 response_list.xml 如下:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:id="@+id/responseList"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="6dip" >
<!-- Other views are present here-->
<Button
  android:id="@+id/upvoteButton"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:onClick="upVoteResponse"
  android:text="VoteUp"/>

问题:upvoteButton 在响应列表中始终可见,即使登录的用户不等于 parent post 的所有者。想知道我怎样才能让它发挥作用!提前致谢。

注:我对Android的熟悉只有五个月。我已经搜索了很多以弄清楚如何使这项工作,但直到现在都没有成功。

   LayoutInflater li = LayoutInflater.from(this);
    View v = li.inflate(R.layout.response_list, null, false);
    Button upVoteButton = (Button) v.findViewById(R.id.upvoteButton); 
    upVoteButton.setVisibility(View.GONE);

此处第 2 行和第 3 行中引用的视图 "v" 和 "upVoteButton" 在任何地方都不可见。请注意,您已膨胀视图 "v" 并且 "upVoteButton" 已在内存中膨胀,但未在用户界面中膨胀。

您的代码中引用的视图和按钮根本不是您实际想要引用的视图和按钮。

您不应在 if 块内膨胀任何视图,而必须使用 getView() 方法的参数 - View 和 Position 来实现您的目标。