如何通过单击更改文本视图中的文本?

时间:2015-01-16 20:02:05

标签: java android

我有一个添加任务的代码,点击按钮并选择颜色。 我想在添加任务后通过长按单击打开带有edittext的对话框更改其内容。 我怎样才能做到这一点? 抱歉我的英语不好!

LinearLayout container;
EditText inputText;
TextView txt;
RadioGroup colorPick;
int checkedColor;
//Counter
int i=1;
int id=1;
//Colors
int red = Color.parseColor("#EF9A9A");
int blue = Color.parseColor("#90CAF9");
int white = Color.parseColor("#FFFFFF");

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    inputText = (EditText)findViewById(R.id.inputText);
    container=(LinearLayout)findViewById(R.id.container);
    colorPick=(RadioGroup)findViewById(R.id.colorPick);
    colorPick.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(RadioGroup group, int checkedId) {
            switch (checkedId){
                case R.id.colorBlue:
                    checkedColor=blue;

                    break;
                case R.id.colorRed:
                    checkedColor=red;
                    break;
                case R.id.colorWhite:
                    checkedColor=white;
                    break;
                default:
                    checkedColor=white;
            }
        }
    });


}
public void add(View v){

    final String input=inputText.getText().toString();
    txt = new TextView(this);

    if(input.matches("")){
        inputText.setBackgroundColor(-65536);
    }else{
        txt.setHeight(50);
        txt.setText(i+". "+input);
        txt.setBackgroundColor(checkedColor);
        i++;
        container.addView(txt);
        colorPick.clearCheck();
        inputText.setText("");
        //Add a edit option
        txt.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View v) {
                id=txt.getId();
                dialogCustom();
                return false;
            }
        });

    }



}
public void remove(View v){
    container.removeAllViews();
}
public void removeEditColor(View v){
    inputText.setBackgroundColor(0x00000000);
}
private void dialogCustom(){
    AlertDialog.Builder editTxtDialog = new AlertDialog.Builder(this);
    LinearLayout layout = new LinearLayout(this);
    layout.setOrientation(LinearLayout.VERTICAL);
    EditText input1 = new EditText(this);
    editTxtDialog.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {

        }
    });
    input1.setHint("Change the task..");
    layout.addView(input1);
    editTxtDialog.setView(layout);
    editTxtDialog.show();
}

1 个答案:

答案 0 :(得分:0)

向对话框创建方法添加参数,以便设置文本:

private void dialogCustom(final TextView v) {
    AlertDialog.Builder editTxtDialog = new AlertDialog.Builder(this);
    LinearLayout layout = new LinearLayout(this);
    layout.setOrientation(LinearLayout.VERTICAL);
    EditText input1 = new EditText(this);
    editTxtDialog.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            v.setText("Some text");
        }
    });
    input1.setHint("Change the task..");
    layout.addView(input1);
    editTxtDialog.setView(layout);
    editTxtDialog.show();
}

并调用这样的方法:

public void add(View v){
    final String input = inputText.getText().toString();
    txt = new TextView(this);

    if(input.matches("")){
        inputText.setBackgroundColor(-65536);
    } else{
        txt.setHeight(50);
        txt.setText(i+". "+input);
        txt.setBackgroundColor(checkedColor);
        i++;
        container.addView(txt);
        colorPick.clearCheck();
        inputText.setText("");
        //Add a edit option
        txt.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View v) {
                id=txt.getId();
                dialogCustom((TextView) v);
                return false;
            }
        });
    }
}
相关问题