【问题标题】:How to change visibility of a textview which is in a listview如何更改列表视图中的文本视图的可见性
【发布时间】:2019-09-02 00:58:35
【问题描述】:

我的 activity_main.xml 中有一个 listView。我为列表视图的行使用了布局(list_layout)。 list_layout 包含 3 个 textView。我在我的 Mainactivity 中添加了一个名为“Setting”的活动。我想用一个按钮从 settin.java 更改 list_layout 的 3. textView 的可见性。

我的意思是当我点击按钮时(按钮代码进入setting.java(按钮进入activity_setting.xml))list_layout的3.textview必须不可见。

这是来自activity_main.xml

    <ListView
        android:id="@+id/listem"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

    </ListView>

这是 list_layout.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal">
   <TextView
.../>
   <TextView
.../>
   <TextView
        android:id="@+id/turkish_id"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="2"
        android:visibility="visible"/>

</LinearLayout>

MainActivity.Java

     ...    listview = (ListView) findViewById(R.id.listem);
DataHelper.Database data = new DataHelper.Database(MainActivity.this);
            ArrayList<HashMap<String, String>> Liste = data.Listele();
            ListAdapter adapter = new SimpleAdapter(MainActivity.this, Liste, R.layout.list_layout, new String[]{"id", "title", "subtitle"}, new int[]{R.id.kelime_id, R.id.english_id, R.id.turkish_id});
            listview.setAdapter(adapter);
      ...
     public boolean onOptionsItemSelected(MenuItem item) {
             switch (item.getItemId()) {

                case R.id.settings:
                    Intent intent = new Intent(MainActivity.this, Setting.class);
                    startActivity(intent);
                    break;  ...

//Setting.Java

public class Setting extends AppCompatActivity {

    TextView textView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_setting);
    }

    public void click(View view) {//<-----Here is my button's code
        textView=(TextView)view.findViewById(R.id.turkish_id);
        textView.setVisibility(View.INVISIBLE);
    }
}

activity_setting.xml

 <Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="MY BUTTON"
    android:onClick="click"/>

【问题讨论】:

  • 可能是因为您在错误视图中搜索 R.id.turkish_id,正确的视图是适配器内的视图,请参阅此链接了解如何按位置找到正确的视图stackoverflow.com/questions/24811536/…,另一种方法是扩展适配器,以便列表视图的每一行都会根据提供的数据更改可见性,您可以在运行时更改数据并调用 notifyDataSetChanged();刷新 listviewitem 可见性。
  • 再次感谢您,但我想隐藏一列而不是行。每行有 3 个文本视图。如果我隐藏我的行的文本视图(list_layout.xml),我可以隐藏我的列表视图的一列。
  • 可能我必须使用 Sharedpreference 进行设置。但我不会进一步开发这个项目。新思维

标签: android textview visibility


【解决方案1】:

给按钮添加点击监听有不同的方法,参考这个链接: add onclick listener to predefined button?

在你的情况下,你可以在你的活动中实现接口 OnClickListener

public class Setting extends AppCompatActivity implements OnClickListener

那么你应该将你的方法重命名为 onClick

在您的活动的 onCreate 中,您应该添加该行

findViewById(R.id.yourIdButton).setOnClickListener(this);

别忘了给你的按钮一个 id

<Button
    android:"@+id/yourIdButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="MY BUTTON"
    android:onClick="click"/>

您还可以使用“View.GONE”代替“View.INVISIBLE”从布局中完全删除 TextView

【讨论】:

  • 感谢您的回答,但它对我不起作用。我的 textview 问题可见性是 listview 行的一部分。
猜你喜欢
  • 2012-11-26
  • 2014-07-04
  • 1970-01-01
  • 2013-06-04
  • 1970-01-01
  • 2013-04-17
  • 1970-01-01
  • 1970-01-01
  • 2016-09-18
相关资源
最近更新 更多