我必须将重点放在listview项目上。 ListView由TextView组成。 我希望将焦点设置在listview项目上的点,此时我有该项目的位置。
我尝试过setSelectio(pos),其中pos是listview项的位置,但是这会导致将项目的位置设置在屏幕顶部的位置。
请建议我如何继续。
builder.setPositiveButton(R.string.save,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
Log.d("@gaurav", "changeText is not null");
if (null != changeText) {
Log.d("@gaurav", "changeText is not null");
if (!(changeText.getText().toString().equalsIgnoreCase(""))) {
myList
.set(pos, changeText.getText()
.toString());
adapter.notifyDataSetChanged();
setListAdapter(adapter);
}
} else {
Log.d("@gaurav", "changeText is null");
}
getListView().setFocusableInTouchMode(true);
getListView().setSelection(pos);
getListView().requestFocus();
}
});
答案 0 :(得分:5)
我认为您希望根据您的要求突出显示特定的列表项。因此,如果项目在屏幕中不可见,则无法设置焦点。我对吗 ?如果这是您的问题,您可以使用以下方法public void smoothScrollToPosition (int position)
Added in API level 8
滚动到该特定位置,然后使用setSelection()方法
答案 1 :(得分:3)
如果你想在ListView
的特定索引上设置焦点/颜色,你应该试试这个,它运作良好。
list.post(new Runnable() {
@Override
public void run() {
list.setSelected(true);
list.getChildAt(0).setBackgroundColor(Color.BLACK);
list.getChildAt(1).setBackgroundColor(Color.BLUE);
firstListItemPosition = firstListItemPosition +1;
Log.v("firstListItemPosition", "firstListItemPosition ");
}
});
firstListItemPosition = list.getFirstVisiblePosition();