Android 在点击侦听器上获取所选项目
Android Get selected item on click listeners
戈伊斯
我将以下内容用于点击侦听器
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
TextView textview1 = (TextView) findViewById(R.id.textView1);
TextView textview2 = (TextView) findViewById(R.id.Sr2);
TextView textview3 = (TextView) findViewById(R.id.Sr3);
TextView textview4 = (TextView) findViewById(R.id.Sr4);
TextView textview5 = (TextView) findViewById(R.id.Sr5);
TextView textview6 = (TextView) findViewById(R.id.Sr6);
TextView textview7 = (TextView) findViewById(R.id.Sr7);
String text1 = textview1.getText().toString();
String text2 = textview2.getText().toString();
String text3 = textview3.getText().toString();
String text4 = textview4.getText().toString();
String text5 = textview5.getText().toString();
String text6 = textview6.getText().toString();
String text7 = textview7.getText().toString();
Toast.makeText(getBaseContext(), text7, Toast.LENGTH_LONG).show();
}});
工作正常,但提供的数据来自错误的项目
如果我点击列表视图中的第 4 个项目,它会为我提供列表视图顶部的任何项目的数据。如果我向上滚动数据更改,但再次只有项目的数据位于列表视图的顶部
我想我需要指定行但不确定如何获取它
有什么想法吗?
感谢您一如既往的帮助
马克
像这样尝试它只是示例
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
TextView textview1 = (TextView)arg1. findViewById(R.id.textView1);
}});
}
注:
您直接调用 findViewByID()
您需要特定行从该行获取值。例如,
TextView textview1 = (TextView)arg1. findViewById(R.id.textView1);
这里arg1
是你的View
调用 onItemClickListener()
的原因是使用返回的参数之一执行操作,例如"view" 由方法返回为 arg1,这里你只需要通过写 TextView textview = (TextView)arg1.findViewById(R.id.textView);
来引用 arg1
这将解决您的问题。
戈伊斯
我将以下内容用于点击侦听器
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
TextView textview1 = (TextView) findViewById(R.id.textView1);
TextView textview2 = (TextView) findViewById(R.id.Sr2);
TextView textview3 = (TextView) findViewById(R.id.Sr3);
TextView textview4 = (TextView) findViewById(R.id.Sr4);
TextView textview5 = (TextView) findViewById(R.id.Sr5);
TextView textview6 = (TextView) findViewById(R.id.Sr6);
TextView textview7 = (TextView) findViewById(R.id.Sr7);
String text1 = textview1.getText().toString();
String text2 = textview2.getText().toString();
String text3 = textview3.getText().toString();
String text4 = textview4.getText().toString();
String text5 = textview5.getText().toString();
String text6 = textview6.getText().toString();
String text7 = textview7.getText().toString();
Toast.makeText(getBaseContext(), text7, Toast.LENGTH_LONG).show();
}});
工作正常,但提供的数据来自错误的项目
如果我点击列表视图中的第 4 个项目,它会为我提供列表视图顶部的任何项目的数据。如果我向上滚动数据更改,但再次只有项目的数据位于列表视图的顶部
我想我需要指定行但不确定如何获取它
有什么想法吗?
感谢您一如既往的帮助
马克
像这样尝试它只是示例
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
TextView textview1 = (TextView)arg1. findViewById(R.id.textView1);
}});
}
注:
您直接调用 findViewByID()
您需要特定行从该行获取值。例如,
TextView textview1 = (TextView)arg1. findViewById(R.id.textView1);
这里arg1
是你的View
调用 onItemClickListener()
的原因是使用返回的参数之一执行操作,例如"view" 由方法返回为 arg1,这里你只需要通过写 TextView textview = (TextView)arg1.findViewById(R.id.textView);
来引用 arg1
这将解决您的问题。