0

リストビューをフィルタリングした後、最初のリストビューの位置を取得するにはどうすればよいですか? リストビューを埋めるために simpleadapter を使用します。データソース内の各アイテムには独自の ID があり、「ケース」を使用してリダイレクトします。リストビューをフィルタリングした後、後者の項目を最初のリストビューに関連付ける方法がわかりません。位置と ID が変更されました。ありがとうございました。

EditTextView の afterTextChanged を使用して、リストビューをフィルター処理し、通知します。

            @Override
        public void afterTextChanged(Editable paramEditable) {

            listItemsCopy.clear();
            int count=simpleAdapter.getCount();
            if ((count>0 )&&paramEditable.length()>0) {
                for (int i = 0; i < simpleAdapter.getCount(); i++) {
                    Map<String,Object> tempMap=(Map<String,Object>)simpleAdapter.getItem(i);
                    String itemName=tempMap.get("name").toString();
                    HashMap<String, Object> tempHashMap=new HashMap<String, Object>();
                    int copyCount=0;
                    if(itemName.toLowerCase().contains(paramEditable.toString().toLowerCase())){

                        tempHashMap=(HashMap<String, Object>)simpleAdapter.getItem(i);
                        listItemsCopy.add(tempHashMap);

                        copyCount++;
                    }
                }                       

        if(listItemsCopy!=null){
        Handler handler=new Handler();
        handler.postDelayed(new Runnable() {

            @Override
            public void run() {
                simpleAdaptercopy = new SimpleAdapter(getActivity(),
                        listItemsCopy, R.layout.right_menu_list_view, new String[] {
                                "name", "id", "image" }, new int[] {
                                R.id.rightMenuListViewTextView1,
                                R.id.rightMenuListViewTextView2,
                                R.id.rightMenuListViewImageView1 });

                simpleAdapter.setViewBinder(new ViewBinder() {

                    @Override
                    public boolean setViewValue(View view, Object data,
                            String textRepresentation) {
                        if ((view instanceof ImageView && data instanceof Bitmap)) {
                            ImageView iv = (ImageView) view;
                            iv.setImageBitmap((Bitmap) data);
                            return true;
                        } else {
                            return false;
                        }
                    }
                });
                listView.setAdapter(simpleAdaptercopy);
                simpleAdapter.notifyDataSetChanged();


                                }
        }, 1000);
        }
            }
            else {
                listView.setAdapter(simpleAdapter);
                simpleAdapter.notifyDataSetChanged();
            }
        }

次に、リストビューの onItemClick メソッドを使用して、別のインテントをリダイレクトしたいと考えています。データソースが変更されたため、位置と ID の両方が必要なものとは異なります

        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {
            Intent intent = null;
            switch (position) {}`
4

2 に答える 2

1

私は3つの配列でそれを愛しています。テストコードのみ:

String positionString[]=new String[22];
                int latterPosition[]=new int[22];
                for (int i = 0; i < latterPosition.length; i++) {
                    positionString[i]="";
                    latterPosition[i]=0;
                }
                int latterCount=0;
                for (int i = 0; i < positions.length; i++) {
                    if (positions[i]==10) {
                        positionString[latterCount]=i+"";
                        latterPosition[latterCount]=10;
                        latterCount++;
                    }
                }
于 2013-05-06T08:26:57.610 に答える
0

これは、Android が現在表示されているアイテムの ID のみを提供するためです。おそらく、ボタンに 2 つ、上部に 2 つの非表示になっている可能性があります。

このチュートリアルでは、モデルを使用して ListView を作成する方法を確認できます。これは、以前にこの問題が発生したときに役立ちます。これをコードに追加して変更します(チェックボックスは必要ないと思います)。

于 2013-05-06T07:08:36.197 に答える