I 
		
				
				
			
		IIIGeorgeIII
Neues Mitglied
- 1
Guten Tag
Ich hoffe ihr könnt mir Helfen
Habe ein Filter für Search ListView erstellt, das Problem ist es funktioniert nicht, komme einfach nicht mehr weiter :-(
	
	
	
		
	
	
	
		
				
			Ich hoffe ihr könnt mir Helfen
Habe ein Filter für Search ListView erstellt, das Problem ist es funktioniert nicht, komme einfach nicht mehr weiter :-(
		Code:
	
	public class PzCustomAdapter extends BaseAdapter implements Filterable {
    String[] name,einheit;
    private List<String>filteredData = null;
    Context context;
    int [] imageId;
    private static LayoutInflater inflater=null;
    public PzCustomAdapter(MainActivityPz mainActivity, String[] prgmNameList, int[] prgmImages, String[] prgmNameEinheit) {
        // TODO Auto-generated constructor stub
        name=prgmNameList;
        einheit=prgmNameEinheit;
        context=mainActivity;
        imageId=prgmImages;
        inflater = ( LayoutInflater )context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }
    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return name.length;
    }
    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return position;
    }
    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return position;
    }
    @Override
    public Filter getFilter() {
        return new Filter() {
            /* (non-Javadoc)
             * @see android.widget.Filter#performFiltering(java.lang.CharSequence)
             */
            @Override
            protected FilterResults performFiltering(CharSequence constraint) {
                // TODO Auto-generated method stub
            /*
             * Here, you take the constraint and let it run against the array
             * You return the result in the object of FilterResults in a form
             * you can read later in publichResults.
             */
                constraint = constraint.toString().toLowerCase();
                FilterResults result = new FilterResults();
                ArrayList<String> f = new ArrayList<String>();
                ArrayList<String> p = new ArrayList<String>();
                for(String product : name){
                    p.add(product);
                }
                if(constraint != null && constraint.toString().length() > 0)
                {
                    for(int i = 0; i < p.size(); i++)
                    {
                        String product = p.get(i);
                        if(product.toLowerCase().contains(constraint))
                            f.add(product);
                    }
                    result.count = f.size();
                    result.values = f;
                }
                else
                {
                    result.values = p;
                    result.count = p.size();
                }
                return result;
            }
            /* (non-Javadoc)
             * @see android.widget.Filter#publishResults(java.lang.CharSequence, android.widget.Filter.FilterResults)
             */
            @Override
            protected void publishResults(CharSequence constraint, FilterResults results) {
                // TODO Auto-generated method stub
            /*
             * Here, you take the result, put it into Adapters array
             * and inform about the the change in data.
             */
                filteredData = (ArrayList<String>) results.values;
                notifyDataSetChanged();
            }
        };
    }
    public class Holder
    {
        TextView tv,tv2;
        ImageView img;
    }
    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        Holder holder=new Holder();
        View rowView;
        rowView = inflater.inflate(R.layout.listviewpz_layout, null);
        holder.tv=(TextView) rowView.findViewById(R.id.txtpz);
        holder.tv2=(TextView) rowView.findViewById(R.id.curpz);
        holder.img=(ImageView) rowView.findViewById(R.id.flagpz);
        holder.tv.setText(name[position]);
        holder.tv2.setText(einheit[position]);
        holder.img.setImageResource(imageId[position]);
        rowView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(context, ""+name[position], Toast.LENGTH_LONG).show();
                if (prgmNameList[position].equals("Mars II")){
                    Intent intent = new Intent(context, MarszweiActivity.class);
                    context.startActivity(intent);
                }
            }
        });
        return rowView;
    }
		Code:
	
	public class MainActivityPz extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {
    private static final String TAG = MainActivityPz.class.getSimpleName();
    ListView lv;
    Context context;
    PzCustomAdapter adapter;
    public static int[] prgmImages = {
            R.drawable.fuchs,
            R.drawable.boxer,
            R.drawable.dingoeins,
            R.drawable.biber,
            R.drawable.dingozweigeazwei,
            R.drawable.dingozweigsi,
            R.drawable.fennek,
            R.drawable.leopard,
            R.drawable.marder,
            R.drawable.marszwei};
    public static String[] prgmNameList = {
            "Fuchs",
            "Boxer",
            "Dingo I",
            "Biber",
            "Dingo 2 GE A2",
            "Dingo 2 GE C1 GSI",
            "Fennek STF Lu/Bo",
            "Leopard 2",
            "Spz Marder",
            "Mars II"
    };
    public static String[] prgmNameEinheit = {
            "Kpf",
            "Kpf",
            "Kpf",
            "Pionier",
            "Kpf",
            "Inst",
            "Aufklärer",
            "Kpf",
            "Kpf",
            "Artillerie"
    };
    /**
     * ATTENTION: This was auto-generated to implement the App Indexing API.
     * See https://g.co/AppIndexing/AndroidStudio for more information.
     */
    private GoogleApiClient client;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activitypz_main);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar8);
        setSupportActionBar(toolbar);
        context = this;
        lv = (ListView) findViewById(R.id.list4);
        adapter = new PzCustomAdapter(this, prgmNameList, prgmImages, prgmNameEinheit);
        lv.setAdapter(adapter);
        lv.setTextFilterEnabled(true);
        Log.v(TAG, "ausführliche Protokollierung, nicht in Produktion verwenden");
        Log.d(TAG, "Debug-Ausgaben");
        Log.i(TAG, "Informationen");
        Log.w(TAG, "Warnung");
        Log.e(TAG, "Fehler");
        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout8);
        ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
                this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
        drawer.setDrawerListener(toggle);
        toggle.syncState();
        NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view8);
        navigationView.setNavigationItemSelectedListener(this);
        // ATTENTION: This was auto-generated to implement the App Indexing API.
        // See https://g.co/AppIndexing/AndroidStudio for more information.
        client = new GoogleApiClient.Builder(this).addApi(AppIndex.API).build();
    }
    @Override
    public void onBackPressed() {
        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout8);
        if (drawer.isDrawerOpen(GravityCompat.START)) {
            drawer.closeDrawer(GravityCompat.START);
        } else {
            super.onBackPressed();
        }
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);
        getMenuInflater().inflate(R.menu.search_main, menu);
        SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
        SearchView searchView = (SearchView) menu.findItem(R.id.action_search).getActionView();
        searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
        SearchView.OnQueryTextListener textChangeListener = new SearchView.OnQueryTextListener() {
            @Override
            public boolean onQueryTextChange(String newText) {
                // this is your adapter that will be filtered
                adapter.getFilter().filter(newText);
                System.out.println("on text chnge text: "+newText);
                return true;
            }
            @Override
            public boolean onQueryTextSubmit(String query) {
                // this is your adapter that will be filtered
                return true;
            }
        };
        searchView.setOnQueryTextListener(textChangeListener);
        return super.onCreateOptionsMenu(menu);
    }
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case R.id.ueber:
                AlertDialog.Builder alert = new AlertDialog.Builder(this);
                alert.setTitle("Über");
                alert.setMessage("Datenschutzerklärung:");
// Set an EditText view to get user input
                final TextView input = new TextView(this);
                alert.setView(input);
                input.setGravity(Gravity.CENTER_HORIZONTAL);
                input.setText(R.string.uebertextpopup);
                alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int whichButton) {
                    }
                });
                alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int whichButton) {
                        // Canceled.
                    }
                });
                alert.show();
                return true;
            default:
                return super.onContextItemSelected(item);
        }
    }
    @Override
    public boolean onNavigationItemSelected(MenuItem item) {
        int id = item.getItemId();
        if (id == R.id.nav_home) {
            Intent radfahrzeuge = new Intent(this, MainActivity.class);
            startActivity(radfahrzeuge);
        } else if (id == R.id.nav_pkw) {
            Intent radfahrzeuge = new Intent(this, MainActivityPkw.class);
            startActivity(radfahrzeuge);
        } else if (id == R.id.nav_lkw) {
            Intent radfahrzeuge = new Intent(this, MainActivityLkw.class);
            startActivity(radfahrzeuge);
        } else if (id == R.id.nav_anheunger) {
            Intent anheunger = new Intent(this, MainActivityAnheunger.class);
            startActivity(anheunger);
        } else if (id == R.id.nav_pz) {
            Intent rechner = new Intent(this, MainActivityPz.class);
            startActivity(rechner);
        } else if (id == R.id.nav_rechner) {
            Intent rechner = new Intent(this, ZurrmittelActivity.class);
            startActivity(rechner);
        } else if (id == R.id.nav_map) {
            Intent rechner = new Intent(this, MainActivityMap.class);
            startActivity(rechner);
        }
        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout8);
        drawer.closeDrawer(GravityCompat.START);
        return false;
    }
    /**
     * ATTENTION: This was auto-generated to implement the App Indexing API.
     * See https://g.co/AppIndexing/AndroidStudio for more information.
     */
    public Action getIndexApiAction() {
        Thing object = new Thing.Builder()
                .setName("MainActivityPz Page") // TODO: Define a title for the content shown.
                // TODO: Make sure this auto-generated URL is correct.
                .setUrl(Uri.parse("http://[ENTER-YOUR-URL-HERE]"))
                .build();
        return new Action.Builder(Action.TYPE_VIEW)
                .setObject(object)
                .setActionStatus(Action.STATUS_TYPE_COMPLETED)
                .build();
    }
    @Override
    public void onStart() {
        super.onStart();
        // ATTENTION: This was auto-generated to implement the App Indexing API.
        // See https://g.co/AppIndexing/AndroidStudio for more information.
        client.connect();
        AppIndex.AppIndexApi.start(client, getIndexApiAction());
    }
    @Override
    public void onStop() {
        super.onStop();
        // ATTENTION: This was auto-generated to implement the App Indexing API.
        // See https://g.co/AppIndexing/AndroidStudio for more information.
        AppIndex.AppIndexApi.end(client, getIndexApiAction());
        client.disconnect();
    }
}