0

在此处输入图像描述我必须将重点放在列表视图项目上。ListView 由 TextView 组成。我想将焦点设置在 listview 项目上的点,此时我有了该项目的位置。

我试过 setSelectio(pos),其中 pos 是列表视图项的位置,但这会导致将项的位置设置在屏幕顶部的位置。

请建议我如何进行。

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

                });
4

2 回答 2

5

我认为您想根据您的要求突出显示特定的列表项。因此,如果该项目在屏幕上不可见,您将无法设置焦点。我对吗 ?如果这是您的问题,您可以使用以下方法public void smoothScrollToPosition (int position) Added in API level 8 滚动到该特定位置,然后使用 setSelection() 方法

于 2012-12-01T10:48:56.093 回答
4

如果你想在 的特定索引上设置焦点/颜色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();
于 2015-03-06T10:46:01.870 回答