使用可编辑的文本视图查看(onClick)

时间:2017-11-17 22:13:54

标签: android android-layout android-studio

我有一个带有几个textView的视图。我希望它们可以在Click上编辑。 以下代码似乎没有做应该做的事情:

    textView1 = (TextView) findViewById(R.id.tv1);
    textView1.setText(tv1);
    runEditListener(textView1);


    textView2 = (TextView) findViewById(R.id.tv2);
    textView2.setText(tv2);
    runEditListener(textView1);

.......

    private void runEditListener(TextView textView) {

    dialog = new AlertDialog.Builder(this).create();
    editText = new EditText(this);
    dialog.setTitle("Edit");
    dialog.setView(editText);
    dialog.setButton(DialogInterface.BUTTON_POSITIVE, "Save", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialogInterface, int i) { textView.setText(editText.getText());

        }
    });

    textView.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View view){
            editText.setText(textView.getText());
            dialog.show();
        }
    });

}

我可能应该只运行一次runEditListener()方法并获取用户点击的TextView,但我真的不知道该怎么做。

4 个答案:

答案 0 :(得分:0)

您在公共空白中调用对话框。对话不应该是最终的吗? textView也是如此,也称为public void。

答案 1 :(得分:0)

使用runEdit中的代码创建OnClickListener ...然后将其设置为textview.onClickLiatener(yourListener);之类的文本视图 您可以通过为您的活动类实现OnClickListener,然后使用text1.onClickListener(this); text2.onClickListener(this);等...

来实现

答案 2 :(得分:0)

您最好实施统一的onClickListener()

<强>活动

public class Activity extends AppCompatActivity implements View.OnClickListener
{
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_layout);

        TextView textView1 = findViewById(R.id.text_view_1);
        textView1.setOnClickListener(this);

        TextView textView2 = findViewById(R.id.text_view_2);
        textView2.setOnClickListener(this);

        TextView textView3 = findViewById(R.id.text_view_3);
        textView3.setOnClickListener(this);

    }

    @Override
    public void onClick(View v)
    {
        final TextView textView = (TextView) v;

        final EditText editText = new EditText(this);
        editText.setText(textView.getText());

        AlertDialog dialog = new AlertDialog.Builder(this).create();
        dialog.setTitle("Edit");
        dialog.setView(editText);
        dialog.setButton(DialogInterface.BUTTON_POSITIVE, "Save", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                textView.setText(editText.getText());
            }
        });
        dialog.show();
    }
}


ButterKnife
使用 ButterKnife 它更简单,您不需要专门实现View.OnClickListener

public class Activity extends AppCompatActivity
{
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_layout);

        // ButterKnife Binder
        ButterKnife.bind(this);
    }

    // ButterKnife OnClick
    @OnClick({R.id.text_view_1, R.id.text_view_2, R.id.text_view_3})
    void onClickTextView(final TextView textView)
    {
        final EditText editText = new EditText(this);
        editText.setText(textView.getText());

        AlertDialog dialog = new AlertDialog.Builder(this).create();
        dialog.setTitle("Edit");
        dialog.setView(editText);
        dialog.setButton(DialogInterface.BUTTON_POSITIVE, "Save", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                textView.setText(editText.getText());
            }
        });
        dialog.show();
    }
}

答案 3 :(得分:0)

textView.setFocusable(true);
textView.setEnabled(true);
textView.setClickable(true);
textView.setFocusableInTouchMode(true);