Wie per EditText Suchfeld Check Box findem?

  • Antworten:4
Fabs44
  • Forum-Beiträge: 368

05.10.2015, 20:35:03 via App

Hallo Zusammen,

Ich will ein Suchfeld haben mitdem der Benutzer der App Checkboxen schneller finden kann, da es sehr viele Checkboxen geben wird (mit ListView).

Wie geht das?

Vielen Dank!

Liebe Grüße Fabi

Liebe Grüße Fabian :)

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

06.10.2015, 09:08:26 via App

Die Frage ist nach was suchen. Du misst ja ein kriterium Festlegensonst geht das ja nicht. was das sein soll musst du selber festlegen.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Gelöschter Account
  • Forum-Beiträge: 438

06.10.2015, 14:18:34 via Website

Ich würde eine Map<String, Checkbox> alle Checkboxes ihren Labels zuordnen. Die Keys kannst Du dann nach den bisher eingegebenen Buchstaben durchsuchen und z.B. ein Liste der noch möglichen Labels unter dem Texteingabefeld anzeigen. Beim Antippen eines Labels springt der Fokus dann zur entsprechenden Checkbox.

— geändert am 07.10.2015, 12:52:21

Aktuelles Entwicklungsprojekt: (thinking) Sudoku Dojo Free (lightbulb)
Ich freue mich über Tester/innen.

Antworten
Fabs44
  • Forum-Beiträge: 368

06.10.2015, 18:28:27 via Website

Hallo Zusammen,

ich habe es jetzt so gemacht, dass der Text gefunden wird.
Wie kann ich es jetzt machen, sodass CheckBoxen gezeigt werden, nach denen man suchen kann.

Java Datei:

public class Home extends AppCompatActivity {

String[] items;
ArrayList<String> listItems;
ArrayAdapter<String> adapter;
ListView listView;
EditText editText;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_home);
    listView=(ListView)findViewById(R.id.listview);
    editText=(EditText)findViewById(R.id.txtsearch);
    initList();
    editText.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            if(s.toString().equals("")){
                // reset listview (resette listview)
                initList();
            }
            else{
                // perform search
                searchItem(s.toString());
            }
        }

        @Override
        public void afterTextChanged(Editable s) {

        }
    });

}


public void searchItem(String textToSearch){
    for(String item:items){
        if(!item.contains(textToSearch)) {
            listItems.remove(item);
        }

    }
    adapter.notifyDataSetChanged();

}

public void initList(){
    items=new String[]{"Canada","China"};
    listItems=new ArrayList<>(Arrays.asList(items));
    adapter=new ArrayAdapter<String>(this,R.layout.list_item, R.id.txtitem, listItems);
    listView.setAdapter(adapter);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_home, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
        return true;
    }

    return super.onOptionsItemSelected(item);
}

}

XML Datei

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:text="Text"
    android:id="@+id/textview"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true" />

<Button
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="Buttontext"
    android:id="@+id/button"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true" />



<EditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/txtsearch"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="38dp"
    android:hint="search"
    />
    <ListView
        android:id="@+id/listview"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"></ListView>

Liebe Grüße Fabian :)

Antworten
Gelöschter Account
  • Forum-Beiträge: 438

07.10.2015, 12:56:42 via Website

Ich würde mal annehmen, dass Du unter Deinem EditText ein FrameLayout benötigst, mit dem Du die Liste der Kandidaten über den Checkboxes anzeigen kannst. Das Framelayout enthält dann beide GUI Elemente und das "oben" liegende (i.e. die möglichen Ergänzungen der Suche) wird je nach Bedarf auf visible bzw gone gesetzt.

Aktuelles Entwicklungsprojekt: (thinking) Sudoku Dojo Free (lightbulb)
Ich freue mich über Tester/innen.

Antworten