1

多くの子を持つ ExpandableListView があります。子の中には、タイトルと説明で構成されているものもあれば、説明がないものもあります。私は SimpleExpandableListAdapter を使用しており、子のレイアウトは LinearLayout の 2 つの TextView アイテムで構成されています。

私が抱えている問題は、空の説明がまだスペースを占有し、説明のないアイテム間にスペースがありすぎることです。

アダプターでオンザフライで 2 番目の TextView を非表示にする方法、または空の TextView がスペースを占有しないようにレイアウトを設定する方法はありますか?

ありがとう。

4

3 に答える 3

4

クリスチャンは正しかったです(もし彼がそれを答えとして投稿していたら、私はそれを単に受け入れたでしょう;))。

解決策は、独自のアダプターを作成することでした。これはかなり単純であることが判明しましたが、要素の可視性を設定するときにいくつかの落とし穴があります。基本的に、非表示にするか表示するかに関係なく、毎回設定する必要があります。そうしないと、リストをスクロールするときに、別のリスト要素が非表示の要素を表示するはずがないときに、突然非表示の要素が表示されたり、その逆になったりすることがわかります。コード例を次に示します。

public class SpellListAdapter extends CursorAdapter {
    private LayoutInflater mLayoutInflater;
    private Context mContext;
    public SpellListAdapter(Context context, Cursor c) {
        super(context, c);
        mContext = context;
        mLayoutInflater = LayoutInflater.from(context); 
    }

    @Override
    public View newView(Context context, Cursor cursor, ViewGroup parent) {
        View v = mLayoutInflater.inflate(R.layout.list_item_fave, parent, false);
        return v;
    }

    @Override
    public void bindView(View v, Context context, Cursor c) {
        String spell = c.getString(c.getColumnIndexOrThrow(SpellDbAdapter.KEY_SPELL));
        int fave = c.getInt(c.getColumnIndexOrThrow(SpellDbAdapter.KEY_FAVORITE));

        TextView Spell = (TextView) v.findViewById(R.id.text);
        if (Spell != null) {
            Spell.setText(spell);
        }

        //Set Fave Icon
        TextView Fave = (TextView) v.findViewById(R.id.fave_icon);
        //here's an important bit. Even though the element is set to invisible by
        //default in xml, we still have to set it every time. Then, if the 
        //spell is marked as a favorite, set the view to visible. 
        Fave.setVisibility(View.INVISIBLE);
        if (fave == 1){
            Fave.setVisibility(View.VISIBLE);
        }
    }

}
于 2011-06-07T13:09:52.223 に答える
2

可視性をに設定してみてくださいView.GONE

于 2010-12-07T01:07:58.010 に答える
0

set Fave.setHeight(0) もアダプターでうまくいくようです。

于 2012-03-26T20:17:25.203 に答える