使一个EditText行可单击,而不是可编辑的Android

时间:2016-11-19 17:25:52

标签: android android-arrayadapter

我显示了活动中的项目列表,并且我使用了ArrayAdapter,因此我的xml中只能有TextView / EditText。但我希望能够编辑文本并以某种方式保存。现在......我只能编辑,但由于我没有按钮,我无法保存内容。我可以从列表中创建一行不可编辑但可点击吗?要模拟按钮的动作吗?

<?xml version="1.0" encoding="utf-8"?>
<EditText xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/my_edit_text"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:background="#035E7B"
    />

类似的东西:

Row1Editable

Row2Editable

Row3Editable

点击这里保存您的修改

    public class SingleListItem extends ListActivity {
    SweetsXmlController controller;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_single_list_item);
        controller = new SweetsXmlController();

        Intent intent = getIntent();
        int position = intent.getIntExtra("position", 1);
        String[] mTestArray = getResources().getStringArray(R.array.sections);
        Sweet toShow = controller.getSweetByPosition(position, mTestArray);

        ArrayList<String> res = new ArrayList<>();
        res.add(toShow.getName());
        res.add("$" + toShow.getPrice());
        res.add(toShow.getDescription());
        res.add(toShow.getCalories() + "kcal");res.add("Click here to save your changes!");

        EditText editText = (EditText) findViewById(R.id.my_edit_text);
        editText.addTextChangedListener(new TextWatcher() {

            @Override
            public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

            }

            @Override
            public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
                Log.d("HAAAAAAAAAAAAH", "Trying to MOVE TO NEXT ITEM ");
            }

            @Override
            public void afterTextChanged(Editable editable) {

            }
        });

        ArrayAdapter<String> adapter;
        adapter = new ArrayAdapter<String>(
                this,
                R.layout.activity_single_list_item,
                res);
        setListAdapter(adapter);



    }

2 个答案:

答案 0 :(得分:0)

您需要为此编写自定义适配器 - 请查看http://www.vogella.com/tutorials/AndroidListView/article.html。在适配器的getView()方法中,您可以使用EditText.setEnabled(boolean)方法来切换它是否可编辑。

此外,如果您只需要一个按钮,那么在您的布局中单独使用listview +按钮会更容易。

答案 1 :(得分:0)

我认为您可以使用以下方法:

EditText myEditTextField = new EditText(this);

myEditTextField.addTextChangedListener(new TextWatcher() {
    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {

    }

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {

    }

    @Override
    public void afterTextChanged(Editable s) {

    }
});

更改文本后,只需将输出保存在textView中。