我有一个带有几个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,但我真的不知道该怎么做。
答案 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);