[OFFEN] Probleme mit SearchView in ArrayAdapter

G

Gerhard123456

Neues Mitglied
0
Hallo,
ich bin neu im Programmieren und versuche mir gerade eine App zu erstellen, die mir eine Liste von codes ausgibt. Bei klicken auf den entsprechenden werde ich auf die Beschreibung weitergeleitet. Dies funktioniert wunderbar.

Da ich eine sehr große Liste anzeigen lasse, möchte ich noch einen SearView einfügen. Leider komme ich da gar nicht klar. Selbst mit Beispielen aus dem Netz bekomme ich das nicht hin.
Ich hoffe es kann mir jemand helfen. NAch folgend mein Code aus der MainActivity und die ListActivity für das Anzeigen der Beschreibung.


MainActivity.java
Code:
public class MainActivity extends AppCompatActivity implements View.OnClickListener {   
    ListView listView;
    Button but_zu_codes;
    ArrayAdapter<String> mAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        but_zu_codes = (Button) findViewById(R.id.codes);
        but_zu_codes.setOnClickListener(this);

        listView = (ListView) findViewById(R.id.listView);

        mAdapter = new ArrayAdapter<String>(MainActivity.this,
                android.R.layout.simple_list_item_1,
                getResources().getStringArray(R.array.tr_codes));

        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                Intent intent = new Intent(MainActivity.this, ListActivity.class);
                intent.putExtra("TroubleCodes", listView.getItemAtPosition(i).toString());
                startActivity(intent);
            }
        });
        listView.setAdapter(mAdapter);
}

ListActivity.java // Beschreibung der Codes nach anklicken in MainActivity

Code:
public class ListActivity extends AppCompatActivity {
    ListView listView;
    String[] states;   

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_list);

        listView = (ListView) findViewById(R.id.listView);
        Bundle mBundle = getIntent().getExtras();
        if (mBundle != null) {
            String country = mBundle.getString("TroubleCodes");
            if (country.equalsIgnoreCase("B0562")) {
                states = getResources().getStringArray(R.array.c_B0562);
            }
            else if (country.equalsIgnoreCase("B0563")) { states = getResources().getStringArray(R.array.c_B0563); }
            else if (country.equalsIgnoreCase("B1004")) { states = getResources().getStringArray(R.array.c_B1004); }
            else if (country.equalsIgnoreCase("B1005")) { states = getResources().getStringArray(R.array.c_B1005); }
            else if (country.equalsIgnoreCase("B1006")) { states = getResources().getStringArray(R.array.c_B1006); }
        }

        ArrayAdapter<String> mAdapter = new ArrayAdapter<String>(ListActivity.this,
                android.R.layout.simple_list_item_1, states);
        listView.setAdapter(mAdapter);
    }

    @Override
    public void onClick(View v) {

        if (v.getId() == R.id.codes) {
            Intent weiter = new Intent(MainActivity.this, MainActivity.class);
            startActivity(weiter);
        }
    }
}


activity_main.xml //Layout

Code:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:id="@+id/activity_start"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="2dp"
    android:paddingLeft="0dp"
    android:paddingRight="0dp"
    android:paddingTop="0dp"
    tools:context="com.example.customlistview.MainActivity"
    android:weightSum="1">
    <SearchView
        android:layout_width="match_parent"
        android:layout_height="26dp" />
    <ListView
        android:layout_width="wrap_content"
        android:layout_height="480dp"
        android:id="@+id/listView"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_below="@+id/toolbar"
        android:layout_weight="0.72" />
    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <Button
            android:text="Codes"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/codes"
            android:background="@android:color/transparent"/>
</LinearLayout>
</LinearLayout>
Anhang anzeigen 565714 Anhang anzeigen 565714 Anhang anzeigen 565714 Anhang anzeigen 565714 Anhang anzeigen 565714 Anhang anzeigen 565715 Anhang anzeigen 565714 Anhang anzeigen 565715
 

Anhänge

  • main.zip
    35,1 KB · Aufrufe: 103
Da mein Anhang nicht angezeigt wird.
Suche.JPG
 
Hallo Gehard,

ich kann Dir bei deiner Vorgehensweise nicht wirklich helfen , da ich meine Searches mit einem TextWatcher & AppAcompatCompleteTextView
und einer Sqlite aufbaue (welche ich bei grossen Listen empfehlen würde)

Desweiteren würde ich ( nicht zwingend notwendig) eher ein RecycleView anstatt einem ListView verwenden


Hier mal auf die schnelle ein Ansatz
AutoCompleteTextView
 
Zuletzt bearbeitet:
Im Netz findet man schon einige Programmstücke (Arrays) mit einer Suche. Die kann ich für mich jedoch nicht anwenden, da ich es dann nicht schaffe das Weiterleiten, bzw. Anzeigen auf der zweiten Seite zu programmieren.
 
Hab den Code mit der Anleitung:
mal angepasst. Ich habe auch eine menu_search.xml angelegt, aber die wird mir nicht angezeigt. Wie bekomme ich die menu in die activity_main.xml eingebunden?
Glaub dann sollte es funktionieren

Code:
package com.example.customlistview;


import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.SearchView;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    String[] mArray = {};
    ArrayAdapter<String> mAdapter;
    ListView listView;
    Button but_zu_codes;




    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        but_zu_codes = (Button) findViewById(R.id.codes);
        but_zu_codes.setOnClickListener(this);

        mArray = new String[] {"B0562","B0563","B1004","B1005","B1006"};
        listView = (ListView) findViewById(R.id.listView);

     /*   mAdapter = new ArrayAdapter<String>(MainActivity.this,
                android.R.layout.simple_list_item_1,
                getResources().getStringArray(R.array.tr_codes));
*/

        mAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mArray);
        listView.setAdapter(mAdapter);

      /* mAdapter = new ArrayAdapter<String>(MainActivity.this,
                android.R.layout.simple_list_item_1,
                getResources().getStringArray(R.array.tr_codes));
    */


        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                Intent intent = new Intent(MainActivity.this, ListActivity.class);
                intent.putExtra("TroubleCodes", listView.getItemAtPosition(i).toString());
                startActivity(intent);

            }
        });
        listView.setAdapter(mAdapter);

    }
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater menuInflater = getMenuInflater();
        menuInflater.inflate(R.menu.menu_search, menu);

        MenuItem menuItem = menu.findItem(R.id.search_badge_ID);

        SearchView searchView = (SearchView) menuItem.getActionView();
        searchView.setOnQueryTextListener (new SearchView.OnQueryTextListener() {
            @Override
            public boolean onQueryTextSubmit(String s) {
                return false;
            }

            @Override
            public boolean onQueryTextChange(String s) {
                mAdapter.getFilter().filter(s);
                return false;
            }
        });
        return super.onCreateOptionsMenu(menu);
}


    @Override
    public void onClick(View v) {

        if (v.getId() == R.id.codes) {
            Intent weiter = new Intent(MainActivity.this, MainActivity.class);
            startActivity(weiter);
        }
    }
}

menu_search.xml
Code:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:android="http://schemas.android.com/apk/res/android">
    xmlns:android="http://schemas.android.com/apk/es-auto">
    <item
        android:id="@+id/search_badge_ID"

        android:icon="@android:drawable/ic_menu_search"
        app:actionViewClass="android.widget.SearchView"
        app:showAsAction="always"

        android:title="Search hier" />
</menu>
 
Kann mir keiner weiterhelfen?
 
Hallo Gerhard,

bitte nicht pushen.

Ich denke dass bei diesem (endlich) schönen Wetter nicht alle vor der Kiste sitzen.

Gib der community auch ein bisschen Zeit
 
  • Danke
Reaktionen: swa00

Ähnliche Themen

S
Antworten
4
Aufrufe
990
Sempervivum
S
D
Antworten
23
Aufrufe
2.498
Data2006
D
R
Antworten
3
Aufrufe
1.614
Ritartet
R
Zurück
Oben Unten