如何更改为ListActivity?

问题描述 投票:0回答:1

我尝试将我的活动从AppCompatActivity更改为ListActivity,并尝试按照Internet上给出的步骤进行操作,但是我的应用始终崩溃。为了使ListActivity正常工作,我必须如何更改代码?

最后,我希望能够单击listView中的一项,然后打开一个新窗口,其中包含在listitem后面的对象上建立的信息。

MainActivity.java

package fasde.android.distanceapp;

import android.app.ListActivity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.widget.EditText;
import android.widget.ListView;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;


public class MainActivity extends ListActivity {

    ListView listView;
    SpielortAdapter spielortAdapter;
    EditText editText;

    /**
     * Gets the whole app running. Creates a listView, an editText and a spielortAdapter and gets
     * all of them running.
     *
     * @param savedInstanceState
     */
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        listView = findViewById(R.id.list);
        editText = findViewById(R.id.inputSearch);

        List<String> setup = new ArrayList<>();
        ArrayList<Spielort> spielorts = new ArrayList<>();

        Map<String, Spielort> vereine = new TreeMap<>();

        for (Spielort ort : Spielort.gottaListEmAll()) {
            vereine.put(ort.getSpielort(), ort);
        }

        for (Map.Entry<String, Spielort> entry : vereine.entrySet()) {
            setup.add(entry.getValue().toString());
            spielorts.add(entry.getValue());
        }


        spielortAdapter = new SpielortAdapter(this, spielorts);

        listView.setAdapter(spielortAdapter);

        editText.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
                // Nothing
            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                MainActivity.this.spielortAdapter.getFilter().filter(s);
            }

            @Override
            public void afterTextChanged(Editable s) {
            }
        });


    }


}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="fasde.android.distanceapp.MainActivity">

    <EditText android:id="@+id/inputSearch"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:hint="Suche nach Ort"
        android:inputType="textVisiblePassword"/>

    <ListView
        android:id="@+id/list"
        android:layout_marginTop="?android:attr/actionBarSize"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
</RelativeLayout>
java android android-studio listactivity
1个回答
0
投票

转到您的主要活动文件,在本例中为activity_main.xml。将android:orientation设置为垂直。然后转到您的styles.xml文件。根据您应用程序的主题,如果要使用浅色主题(可以稍后更改),请执行<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">;如果您想要黑色主题,则可以执行<style name="AppTheme" parent="Theme.AppCompat.Dark.NoActionBar">(请注意,更改HEX值会很冒险) 。祝您开发程序顺利!

© www.soinside.com 2019 - 2024. All rights reserved.