1

リストビューに約20列入力しました。しかし、私はそのユーザーがビュー内のいくつかの列を無効化(非表示)するオプションを持っていることを望んでいます。独自のアレイアダプタを作成して行を表示できることがわかりました。しかし、これを2〜20個の連続したアイテムに対して定義したくありません。それを行う方法はありますか?

4

1 に答える 1

1

私はそれを行う方法の1つを見つけました。たとえば、リストビューにこのアイテムのレイアウトがあります。独自のアダプターを作成し、setVisibility(View.GONE);を呼び出すだけです。このアイテムをリストビューから非表示にします。PS:これは実際のコードの例にすぎません。列を非表示にするIF()が必要です。

アイテムのレイアウト。

<TextView
    android:id="@+id/description"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="TextView" />

<TextView
    android:id="@+id/value"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/description"
    android:layout_alignBottom="@+id/description"
    android:layout_toRightOf="@+id/description"
    android:text="TextView" />

そしてMyAdapter。

private class ConnectedAdapter extends ArrayAdapter<ConnectionClass> {

    private ArrayList<ConnectionClass> connectionList;

    public ConnectedAdapter(Context context, int textViewResourceId,
            ArrayList<ConnectionClass> countryList) {
        super(context, textViewResourceId, countryList);
        this.connectionList = new ArrayList<ConnectionClass>();
        this.connectionList.addAll(countryList);
    }

    private class ViewHolder {
        TextView description;
        TextView value;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        ViewHolder holder = null;
        Log.v("ConvertView", String.valueOf(position));

        if (convertView == null) {
            LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = vi.inflate(R.layout.activity_connected_item,
                    null);

            holder = new ViewHolder();
            holder.description = (TextView) convertView
                    .findViewById(R.id.description);
            holder.value = (TextView) convertView
                    .findViewById(R.id.value);

            convertView.setTag(holder);

        } else {
            holder = (ViewHolder) convertView.getTag();
        }

        ConnectionClass connection = connectedList.get(position);
        holder.description.setText(connection.getDescription());
        holder.description.setVisibility(View.GONE);
        holder.value.setText(connection.getValue());

        return convertView;

    }

}
于 2013-02-06T11:58:11.483 に答える