【问题标题】:how to hide a textview in SimpleAdapter如何在 SimpleAdapter 中隐藏文本视图
【发布时间】:2013-01-07 15:11:07
【问题描述】:

我正在使用一个简单的适配器在列表视图的不同文本字段中显示一组字符串...我希望当我单击该列表视图中的特定内容时,某些文本视图应该是不可见的。 该怎么做...

我的代码是

String[] from = new String[] {"ONE", "TWO", "THREE", "FOUR", "FIVE", "SIX", "SEVEN"};

int[] to = new int[] { R.id.textView_1, R.id.textView_2, R.id.textView_3, R.id.textView_4, R.id.textView_5, R.id.textView_6, R.id.textView_7};


Adapter adapter = new SimpleAdapter(this, Maps, R.layout.search, from, to);
ListView lvSearch = (ListView) findViewById(R.id.listView_SearchResult);
lvSearchResult.setAdapter(adapter);

点击这里

R.id.textView_5, R.id.textView_6, R.id.textView_7

应该是不可见的

【问题讨论】:

    标签: android simpleadapter


    【解决方案1】:

    不确定您究竟要在这里寻找什么,但如果您想要做的只是隐藏 TextView,您可以执行以下操作:

    TextView txtView = (TextView)findViewById(R.id.textView_6);
    txtView.setVisibility(View.GONE)
    

    如果您向我们提供更多信息,我们可以尝试进一步帮助您。

    【讨论】:

      【解决方案2】:

      为布局layout.search中的TextViews R.id.textView_5, R.id.textView_6, R.id.textView_7设置属性android:visibility="gone"

      对于你的例子,我猜结果应该是这样的:

      【讨论】:

        【解决方案3】:

        SimpleAdapter 中有一个方法可以做到这一点。它被称为 ViewBinder。尝试在SimpleAdapter adapter = new SimpleAdapter(this, Maps, R.layout.search, from, to);setListAdapter(adapter); 之前立即包含这行代码。

        SimpleAdapter.ViewBinder binder = new SimpleAdapter.ViewBinder() {
            @Override
            public boolean setViewValue(View view, Object object, String value) {
                System.out.println("view= "+view);
                System.out.println("view.toString()= "+ view.toString());
                System.out.println("view.getId()= "+ view.getId());
                System.out.println("view.getVisibility()= "+ view.getVisibility());
                System.out.println("view.equals((TextView) view.findViewById(R.id. textView_5))= "+ view.equals((TextView) view.findViewById(R.id.textView_5)));
                if (view.equals((TextView) view.findViewById(R.id.textView_5))) {
                    TextView textView_five = (TextView) view.findViewById(R.id. textView_5);
                    //Change color/answer/etc for textView_5
                }
        
                //OR
                if (view instanceof TextView) {
                    //Do stuff
                    return true;
                }
        
                return false;
            }
        };
        
        adapter.setViewBinder(binder);
        
        setListAdapter(adapter);    
        

        setViewValue() 方法将为您在 adapter 中的每个 R.id.textView_1R.id.textView_2R.id.textView_3R.id.textView_4R.id.textView_5R.id.textView_6R.id.textView_7 调用。 setViewValue() 方法将在每个视图/每次绘制上述R.ids 之一时被调用。

        【讨论】:

          【解决方案4】:

          覆盖@getView 方法并实现它的自定义视图

            @override
            public View getView (int position, View convertView, ViewGroup parent){
             if( convertView == null ){
              //initialize
              convertView = inflater.inflate(R.layout.list_items, parent, false);
             }
             //Here you can hide or visible 
             return convertView;
             }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2016-11-20
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多