java - 旋转手机取消选择列表中的项目 查看

标签 java android

当我旋转手机时, ListView 中选定的项目将被取消选择。这是我的适配器。我只想更改所选项目的颜色(仅是单个选择),当我旋转手机时,我想查看我选择的内容。现在,当我旋转手机时,我看不到所选项目。

public class MainAdapter extends BaseAdapter {

    private LayoutInflater inflater;
    private Context context;
    ArrayList<RowEntity> rowEntities;

    public MainAdapter(Context context, ArrayList<RowEntity> rowEntities) {
        this.context = context;
        this.rowEntities = rowEntities;
        inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

    @Override
    public int getCount() {
        return rowEntities.size();
    }

    @Override
    public Object getItem(int position) {
        return rowEntities.get(position);
    }

    @Override
    public long getItemId(int position) {
        return 0;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        final ViewHolder holder;

        if (convertView == null) {
            holder = new ViewHolder();
            convertView = inflater.inflate(R.layout.main_row_holder, null);
            holder.address = (TextView) convertView.findViewById(R.id.address);
            holder.distance = (TextView) convertView.findViewById(R.id.tv_distance);
            holder.description = (TextView) convertView.findViewById(R.id.description);
            holder.name = (TextView) convertView.findViewById(R.id.name);

            convertView.setTag(holder);
        } else {
            holder = (ViewHolder) convertView.getTag();
        }

        RowEntity rowEntity = rowEntities.get(position);

        if(rowEntity != null){
            holder.address.setText(rowEntity.getAddress());
            holder.address.setText(rowEntity.getAddress());
            holder.distance.setText(rowEntity.getDistance() +"");
        }
        return convertView;
    }

    private class ViewHolder{
        TextView address;
        TextView distance;
        TextView description;
        TextView name;
    }
}

这是我的布局上的 ListView :

<ListView
    android:id="@+id/list"
    android:layout_width="fill_parent"
    android:layout_height="match_parent"
    android:drawSelectorOnTop="false"
    android:listSelector="@drawable/background_listview"
    android:visibility="visible"
    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_above="@+id/bottomPanel" />

这是background_listview.xml:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@color/white_background"
        android:state_pressed="true" />
    <item android:drawable="@color/primary_color"
        android:state_focused="false" />
</selector>

我将其添加到 list 中:

    android:configChanges="keyboardHidden|orientation|screenSize"

当我旋转手机时,onCreate 不起作用

最佳答案

将您的 Activity 启动模式设置为singleTop:

<activity android:launchMode="singleTop" >
</activity>

并覆盖onNewIntent:

@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);

    //setIntent(intent);
}

这将重用 Activity 堆栈中的 Activity 。

关于java - 旋转手机取消选择列表中的项目 查看,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45962321/

相关文章:

java - 使用 Retrofit/Rxjava 进行数据绑定(bind)/实时数据处理配置更改

java - 我如何创建一个运行 java 程序的 .exe?

java - 对齐数字时遇到问题

android - 具有自定义布局的 ListFragment : empty message always displayed

android - 如何在 UML 图中建模 Firebase 数据库?

java - 使用 jakarta.* 包在 Tomcat 10.x 上部署 Spring 5.x

java - 在java中使用main方法为类创建对象时会发生什么

android - 模拟适用于 Android 的 AWS Amplify Auth API

java - 仅当抛出 IOException 时才检查 Broken Pipe

android - Gradle 错误 : Unexpected inputs: android. gms:play-services