其他分享
首页 > 其他分享> > android-每当进入列表视图屏幕时,如何默认使第一项在ListView中聚焦?

android-每当进入列表视图屏幕时,如何默认使第一项在ListView中聚焦?

作者:互联网

在我的列表视图中,我必须使第一个项目成为焦点.在我的应用中,我已经完成了D-PAD的实现,如果我找到了初始焦点,我将使用D-PAD导航焦点.
  我尝试使用setSelection(position)此代码不起作用.

我发现listview有一些奇怪的行为,默认情况下它总是聚焦在-1位置.我不知道为什么?,请澄清一下这种行为.

我的列表视图项是从服务器加载的.那么,当我必须设置setSelection()以及如何检查setAdpter任务是否完成时?

@Override
    public final View getView(final int position, final View convertView, final ViewGroup parent) {
        final LayoutInflater inflater = (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        final View rowView = inflater.inflate(R.layout.list_item_faq, parent,
                false);
        final TextView textView = (TextView) rowView
                .findViewById(R.id.faqlist_text);
        textView.setText("text");
        textView.setMaxLines(2);
        textView.setEllipsize(android.text.TextUtils.TruncateAt.END);
        return rowView;
    }

adapter.xml

 <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/sel_list_item" //this is selector
        android:gravity="center_vertical"
        android:orientation="horizontal" >

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingLeft="8dp"
            android:layout_margin="2dp"
            android:layout_gravity="center"
            android:src="@drawable/cc_question_mark" />

        <TextView
            android:id="@+id/faqlist_text"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:layout_marginLeft="20dp"
            android:gravity="center_vertical"
            android:textColor="#6f6f6f"
            android:textSize="22sp" />
</LinearLayout>

请提出任何建议使第一项成为重点.

解决方法:

yourListView是否可聚焦?

在onResume()中执行

    yourListView.postDelayed(new Runnable() {
    @Override
    public void run() {
        yourListView.setSelection(0);
        yourListView.getChildAt(0).requestFocus()
    }
}, 500);

标签:android-selector,android-listview,android-drawable,android
来源: https://codeday.me/bug/20191120/2046953.html