0

のテキストビューが 1 つvisibility=goneあり、いくつかの条件が true の場合は、に設定したいと思いsetVisibility(View.VISIBLE)ます。

このウィジェットは list_item レイアウト内にあり、リストビュー内にあります。

これが表示されるように設定する私の Java コードです。

if(sex_affiche && favori_affiche){
        mSchedule = new SimpleAdapter(this.getBaseContext(),
                listItem, R.layout.affichage_item_listview, new String[] {
                        "nom", "tel","sex","favori" }, new int[] { R.id.item_nom,
                        R.id.item_tel, R.id.item_sex_jdida, R.id.item_favori });

        listedescontacts.setAdapter(mSchedule);
        registerForContextMenu(listedescontacts);

        if(sex == null){
            Log.d("null", "yes");
            TextView sex2  = (TextView)findViewById(R.id.item_sex_jdida);
            if(sex2 == null)
            Log.d("still null", "yes");
            else
                sex2.setVisibility(View.VISIBLE);
        }


        //favori.setVisibility(View.VISIBLE);

    }

インスタンス化してこのメ​​ソッドoncreateをやり直しましたが、常に null です。

4

1 に答える 1

4

アクセスしようとしているテキストビューはリストにあります。そのため、それらに直接アクセスすることはできません。あなたができることはgetView()、アダプターからオーバーライドし、その中でビューを取得して表示することです(ブラインドコーディング):

    mSchedule = new SimpleAdapter(this.getBaseContext(),
            listItem, R.layout.affichage_item_listview, new String[] {
        "nom", "tel","sex","favori" }, new int[] { R.id.item_nom,
        R.id.item_tel, R.id.item_sex_jdida, R.id.item_favori) {
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View superView = super.getView(position, convertView, parent);
            TextView sex2  = (TextView)superView.findViewById(R.id.item_sex_jdida);
            if(some_condition) {
                sex2.setVisibility(View.VISIBLE);
            } else {
                sex2.setVisibility(View.GONE);
            }
            return superView;
        }
    };
于 2013-10-08T09:30:07.103 に答える