目前我在实现onclicklistener动态创建textview时遇到了一些问题。我会更详细地解释这个问题。我需要做的是,当我单击活动中的按钮时,我需要创建文本视图,当我单击该文本视图时,它应该被删除。但我无法为每个textview设置onclicklistener。因为,设置文本视图的onclicklistener被写在上述按钮的onclick函数内(用于创建textview的按钮),当它从按钮的onclick函数退出时它的范围就会结束(我认为这是问题)。所以我尝试使用可见和不可见的功能,这将在手边创建文本视图并使它们不可见,并且只有在单击按钮(用于创建文本视图的按钮)时它们才可见。但即使它是不可见的,也会分配空间(即空白空间将被提供)。
这是我的代码 此按钮addphone将通过插入edittext phoneno
中的值来动态创建textviewaddphone.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(phoneno.getText().toString().length() > 0 && counter < MAX)
{
addphoneno[counter] = phoneno.getText().toString();
phoneno.setText("");
final TextView mybox = new TextView(getApplicationContext());
mybox.setText(addphoneno[counter]);
mybox.setPadding(5, 5, 5, 5);
mybox.setBackgroundColor(Color.rgb(99, 99, 99));
contactbox[counter] = mybox;
contactbox[counter].setLayoutParams(new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
contactbox[counter].setId(100+counter);
contactbox[counter].setText(addphoneno[counter]+" "+"X");
contactbox[counter].setClickable(true);
contactbox[counter].setOnClickListener(this); //This doesn't work!!!!!
counter = counter+1;
}
}
});
但上面一行中的setOnClickListener无法正常工作
所以任何人都可以帮我解决这个问题。我希望你对我的问题很清楚。
谢谢!
答案 0 :(得分:1)
你可以试试这个:
private OnClickListener phoneViewClickListener = new OnClickListener() {
@Override
public void onClick(View v) {
// your code
}
};
并在TextViews中使用该侦听器:
contactbox[counter].setOnClickListener(phoneViewClickListener);
答案 1 :(得分:0)
您必须实际定义onClickListener,而不是简单地将其设置为布尔值。
contactbox[counter].setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
//this is where you would handle your click event
}
});
祝你好运!
答案 2 :(得分:0)
如果您的按钮是在xml布局上定义的,那么您可以这样做。
在xml布局中,您可以定义用户单击按钮时将调用的方法:
<?xml version="1.0" encoding="utf-8"?>
<Button xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/add_phone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button_send"
android:onClick="addTextView" /> // This is most imporant line
您的活动必须有一个与View参数同名的方法,如下所示:
/** Called when the user touches the button */
public void addTextView(View view) {
// Do something in response to button click
if(phoneno.getText().toString().length() > 0 && counter < MAX)
{
addphoneno[counter] = phoneno.getText().toString();
phoneno.setText("");
final TextView mybox = new TextView(getApplicationContext());
mybox.setText(addphoneno[counter]);
mybox.setPadding(5, 5, 5, 5);
mybox.setBackgroundColor(Color.rgb(99, 99, 99));
contactbox[counter] = mybox;
contactbox[counter].setLayoutParams(new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
contactbox[counter].setId(100+counter);
contactbox[counter].setText(addphoneno[counter]+" "+"X");
contactbox[counter].setClickable(true);
contactbox[counter].setOnClickListener(this); //This will work \o/
counter = counter+1;
}
}
}
在这个方法上,你应该把你的代码放到addViews。
由于所有添加的textview的行为必须相同(我以这种方式理解),当用户点击它时被删除,你可以让你的活动实现onClickListener,你需要实现它正确的活动的onClick方法。