Android 向动态创建的文本视图添加OnClickListener
因此,我尝试将OnClickListeners添加到水平滚动中动态创建的文本视图中。我目前已经动态创建了TextView,但当然,我设置OnClickListener的方式会导致任意单击其中一个TextView,只发送创建的最后一个TextView的信息。例如,我有1000个文本视图,所有1000个文本视图点击后都会给我第1000个文本视图的数据。我想拉取被单击者的.text.toString(),以便将数据发送到其他地方。以下是我得到的:Android 向动态创建的文本视图添加OnClickListener,android,textview,onclicklistener,Android,Textview,Onclicklistener,因此,我尝试将OnClickListeners添加到水平滚动中动态创建的文本视图中。我目前已经动态创建了TextView,但当然,我设置OnClickListener的方式会导致任意单击其中一个TextView,只发送创建的最后一个TextView的信息。例如,我有1000个文本视图,所有1000个文本视图点击后都会给我第1000个文本视图的数据。我想拉取被单击者的.text.toString(),以便将数据发送到其他地方。以下是我得到的: protected void onPostExecut
protected void onPostExecute(JSONArray jArr) {
try {
for (int i = 0; i < jArr.length(); i++) {
flightList.add(jArr.getString(i));
aText = new TextView(getApplicationContext());
aText.setText(jArr.getString(i));
aText.setWidth(50);
aText.setBackgroundColor(Color.BLACK);
aText.setTextColor(Color.WHITE);
aText.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v){
GetMillis myTimer = new GetMillis();
aURL = "http://somelink?startTs="
+ myTimer.getThreeAMToday()
+ "&endTs="
+ myTimer.getFourAMTomorrow()
+ "&datafield="
+ aText.getText().toString();
new myScheduleTask().execute();
}
});
protectedvoid onPostExecute(JSONArray jArr){
试一试{
for(int i=0;i
非常感谢您的帮助!您可以使用
aText.setTag()
存储要发送的字符串。单击视图时,您可以使用v
参数从标记中获取字符串
设置aText.setOnClickListener(此);
也许这会有帮助
/** This is used to create Answer Letters */
for (int i = 0; i < length; i++) {
mAnsImage[i] = new TextView(getActivity());
mAnsImage[i].setOnClickListener(onAnswerClickListener);
}
/**用于创建回复信*/
for(int i=0;i
使用TextView.setID()方法为每个TextView设置唯一Id,然后在onClickListener的onClick方法中,使用其Id获取TextView并执行适当的操作
public void onClick(View v){
switch(v.getID()){
case 1:
//This is TextView with id=1
break;
}
}
如果您只有文本视图,则只需执行以下操作:
@override
public void onClick(View v) {
String clickedTextViewValue = ((TextView) v).getText().toString();
}
一个类似的选项是使用
aText.setId()
。这只是您想使用字符串还是int的问题。因此,我基本上会在创建TextView时使用aText.setId(jArr.getString(I));然后在url中使用v.getId().toString()???@Elliott aText.setTag/v.getTagso我已经合法地创建了1000个文本视图,每个视图都有不同的字符串作为文本。这是很多情况……另外,请尝试将onClick方法排除在循环之外。这将使代码看起来更干净。只有当您正在为所有文本视图寻找不同的实现时,这才是正确的。如果您只需要它们的文本只需单击(视图v){String text=v.getText().toString()}即可执行公共void操作。
@override
public void onClick(View v) {
String clickedTextViewValue = ((TextView) v).getText().toString();
}