所以我正在尝试将OnClickListeners添加到水平滚动内部动态创建的textview。我目前已经动态创建了文本视图,但当然,我设置OnClickListener的方式导致其中一个TextViews的任何单击只发送最后创建的TextView的信息。例如,我有1000个文本视图,点击后所有1000个文本视图将为我提供第1000个textView的数据。我想拉出.text.toString(),无论点击哪个,都可以将数据发送到其他地方。这就是我所拥有的:
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();
}
});
感谢任何帮助!
答案 0 :(得分:1)
您可以使用aText.setTag()
存储要发送的字符串。单击视图后,您可以使用v
参数从标记中获取字符串
答案 1 :(得分:0)
试试这个
设置aText.setOnClickListener(this);
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
aURL = "http://somelink?startTs="
+ myTimer.getThreeAMToday()
+ "&endTs="
+ myTimer.getFourAMTomorrow()
+ "&datafield="
+ v.getText().toString();
}
答案 2 :(得分:0)
可能会有所帮助
/** This is used to create Answer Letters */
for (int i = 0; i < length; i++) {
mAnsImage[i] = new TextView(getActivity());
mAnsImage[i].setOnClickListener(onAnswerClickListener);
}
答案 3 :(得分:0)
使用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;
}
}
答案 4 :(得分:0)
如果你只有TextViews,你可以这样做:
@override
public void onClick(View v) {
String clickedTextViewValue = ((TextView) v).getText().toString();
}