0
我無法突出顯示ListView中選定的項目。我遵循了http://www.michenux.net/android-listview-highlight-selected-item-387.html中的程序。我也嘗試了Android: setselector color for listview not working中的建議無濟於事。我已經嘗試使用DialogFragment中的ListView以及Activity。 (1)我可以設置選擇,但我不能查詢SelectedItemPosition,(2)onItemSelected永遠不會被調用,(3)我無法獲得子View。無法突出顯示ListView中的選定項目
下面是一些代碼:
public class ChooseDirActivity extends Activity
{
private ListView listView = null;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.choose_dir_layout);
listView = (ListView)findViewById(R.id.directory_list);
StateListDrawable selector = new StateListDrawable();
selector.addState(new int[]{android.R.attr.state_selected}, new ColorDrawable(0x808080));
selector.addState(new int[]{ -android.R.attr.state_selected }, new ColorDrawable(0xFFFFFF));
listView.setSelector(selector);
listView.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
{
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l)
{
Log.i("myApp", "onItemSelected"); // Never called
view.setBackgroundColor(0x808080);
}
@Override public void onNothingSelected(AdapterView<?> adapterView) { } }); listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE); }
@Override
protected void onResume()
{
super.onResume();
currentDirectory = Intonia.getStorageDirectory();
ArrayList<String> dirList = getDirectoryList();
int selected = 11;
listView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, dirList));
Log.i("myApp", "setting selection to " + selected);
listView.setSelection(selected);
listView.setItemChecked(selected, true);
Log.i("myApp", "selected item position is " + listView.getSelectedItemPosition());
View childView = listView.getChildAt(selected);
if (childView == null)
{
Log.i("myApp", "view at " + selected + " is null");
}
else
childView.setBackgroundColor(0x808080 );
Object so = listView.getItemAtPosition(selected);
Log.i("myApp", "item at " + selected + " is " + (so == null ? "null" : so.getClass().toString()));
}
}
設置選擇確實所選項目移動到屏幕的頂部,但並沒有出現任何的方式來跟進吧。
這將產生以下的日誌輸出
myApp: setting selection to 11 myApp: selected item position is -1 myApp: view at 11 is null myApp: item at 11 is class java.lang.String
誰能幫助我?