渲染SortableTableView的EditText

时间:2017-04-05 16:42:20

标签: android android-layout android-studio tableviewcell

我正在使用SortableTableView在Android应用程序中显示sqlite表。我想添加表外的编辑按钮。如何在按下编辑按钮时为SortableTableView启用编辑模式?

我尝试了这样的代码,但它不起作用。

/* EditDataAdapter.java */

// THIS IS NOT WORKED ???
public void setRenderEditable() {
    int row = 0;
    LinearLayout rowView = new LinearLayout(_tableView.getContext());

    for (int col = 0; col < _tableView.getColumnModel().getColumnCount(); col++) {
        View cellView = getLongPressCellView(row, col, rowView);

        int cellWidth = _tableView.getColumnModel().getColumnWidth(col, _tableView.getWidth());
        LinearLayout.LayoutParams cellLayoutParams = new LinearLayout.LayoutParams(cellWidth, LinearLayout.LayoutParams.WRAP_CONTENT);
        cellView.setLayoutParams(cellLayoutParams);

        _tableView.addView(cellView);
        _tableView.invalidate();
    }
}



/* EditFragment.java */

// Calling EditDataAdapter
ServerSortableTableView tableView = (ServerSortableTableView) rootView.findViewById(R.id.server_table);
if (tableView != null) {
    EditDataAdapter editDataAdapter = new EditDataAdapter(getContext(), ServerDataFactory.readServerList(), tableView);
    tableView.setDataAdapter(editDataAdapter);
}

Button editButton = (Button) rootView.findViewById(R.id.edit_button);
if (editButton != null) {
    editButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (editButton.getText().toString().equals("edit")) {
                editDataAdapter.setRenderEditable(); // This is not worked
                editButton.setText("save");
            } else {
                editButton.setText("edit");
            }
        }
    });
}

1 个答案:

答案 0 :(得分:0)

我找到了解决问题的方法。我将在这里分享,它可能对其他人有用。

public void setRenderEditable() {
    _tableView.setMinimumWidth(900);
    _tableView.removeViewAt(1);

    int row = 0;
    LinearLayout rowView = new LinearLayout(_tableView.getContext());

    for (int col = 0; col < _tableView.getColumnModel().getColumnCount(); col++) {
        View cellView = getLongPressCellView(row, col, rowView);

        int cellWidth = _tableView.getColumnModel().getColumnWidth(col, _tableView.getWidth());
        LinearLayout.LayoutParams cellLayoutParams = new LinearLayout.LayoutParams(cellWidth, LinearLayout.LayoutParams.WRAP_CONTENT);
        cellView.setLayoutParams(cellLayoutParams);

        rowView.addView(cellView);
    }
    _tableView.addView(rowView, 1);
}