我正在开发示例应用以测试OnFocusChangeListener
,我在它的方法public void onFocusChange(View v, boolean hasFocus)
上保留了调试点,我观察到该方法只调用一次,即在启动应用程序之后,向上这很好但是当我向下滚动到下一个列表项时,项目被聚焦但是方法没有被调用。我知道我错过了一些小事。能帮我摆脱这个问题吗?提前谢谢。
注意使用遥控器的D-Pad进行滚动
java class:
package com.example.listview;
import android.app.Activity;
import android.graphics.Rect;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnFocusChangeListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
public class ListActivity extends Activity implements OnFocusChangeListener{
String[] items={"iOS","android","Symbian",};
//GridView lst;
ListView lst;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list);
lst=(ListView)findViewById(R.id.listView1);
lst.setFocusableInTouchMode(false);
ArrayAdapter<String> adapter=new ArrayAdapter<String>(getBaseContext(), android.R.layout.simple_list_item_1,items);
lst.setAdapter(adapter);
}
public void onFocusChange(View v, boolean hasFocus) {
Toast.makeText(getBaseContext(), "FOCUSED", Toast.LENGTH_LONG).show();
}
}
答案 0 :(得分:3)
当您使用跟踪球或遥控器使其高亮显示时调用焦点(不触摸。例如可以在Android电视中使用左,上,下,右按钮进行导航。)
你需要一个onItemSelected来进行选择。 onItemClickListener单击。
答案 1 :(得分:1)
我找到了解决问题的方法,但我仍然不知道为什么OnFocuschangeListener
无效?我通过实施OnItemSelectedListener
package com.example.listview;
import android.app.Activity;
import android.graphics.Rect;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnFocusChangeListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
public class ListActivity extends Activity implements OnItemSelectedListener{
String[] items={"iOS","android","Symbian",};
//GridView lst;
ListView lst;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list);
lst=(ListView)findViewById(R.id.listView1);
lst.setFocusableInTouchMode(false);
ArrayAdapter<String> adapter=new ArrayAdapter<String>(getBaseContext(), android.R.layout.simple_list_item_1,items);
lst.setAdapter(adapter);
}
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position,
long id)
}