[英]method onFocusChangeListener called only once
我正在開發示例應用程序以測試OnFocusChangeListener
,我在它的方法public void onFocusChange(View v, boolean hasFocus)
上保持調試點,我觀察到該方法只被調用一次,即在啟動應用程序之后public void onFocusChange(View v, boolean hasFocus)
它很好但是當我向下滾動到下一個列表項,項目已集中但未調用方法。 我知道我錯過了一些小事。 能幫我擺脫這個問題嗎? 提前致謝。
注意使用遙控器的D-Pad完成滾動
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();
}
}
使用跟蹤球或遙控器使其高亮顯示時調用焦點(不觸摸。例如可以在Android電視中使用左,上,下,右按鈕進行導航。)
你需要一個onItemSelected來進行選擇。 onItemClickListener用於單擊。
我找到了解決問題的方法,但我仍然不知道為什么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)
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.