2014-06-20 58 views
4

我正在开发示例应用程序来测试OnFocusChangeListener,我保留调试点上它的方法public void onFocusChange(View v, boolean hasFocus),我观察到该方法只调用一次,即启动应用程序后,直到这很好,但当我向下滚动到下一个列表项目,该项目被集中,但方法不被调用。我知道我错过了一点点。你能帮我摆脱这个问题吗?提前致谢。方法onFocusChangeListener只调用一次

注意滚动通过使用遥控器的完成d-垫

java类:

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();  
    } 
} 

回答

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) 
} 
3

焦点被称为当你使用跟踪球或远程使其突出(不接触。一个例子是在Android电视,您与左导航,上,下, )

您需要一个onItemSelected进行选择。 onItemClickListener进行点击。

+1

@谢谢你的回答,我用贴子回答了。 ..非常感谢你 –