2017-07-27 11 views
1

私はAndroidアプリケーションで作業しています。カスタムリストビューをチェックボックスに入れました。チェックボックスを選択して値を取得できます。しかし、私が特定の名前のアプリケーションクラッシュを検索しようとすると。AndroidカスタムListViewの検索でCheckBoxが使用されています。フィルターが機能しません。

ここは私のコードですが、私は何か不足していると思います。ここ

public class MyAdapter extends BaseAdapter { 
    private ArrayList<InfoRowdata> arraylisto; 
    private List<InfoRowdata> worldlist = null; 

    Context mContext; 
    LayoutInflater inflater; 

    public MyAdapter(Context context, List<InfoRowdata> worldpopulationlist) { 
     mContext = context; 
     inflater = LayoutInflater.from(mContext); 
     this.worldlist = worldpopulationlist; 

     this.arraylisto = new ArrayList<InfoRowdata>(); 
     this.arraylisto.addAll(worldpopulationlist); 

    } 

    public class ViewHolder { 
     TextView Name; 
     CheckBox cb; 

    } 
    @Override 
    public int getCount() { 
     // TODO Auto-generated method stub 
     return data.length; 
    } 

    @Override 
    public Object getItem(int position) { 
     // TODO Auto-generated method stub 
     return worldlist.get(position); 
    } 

    @Override 
    public long getItemId(int position) { 
     // TODO Auto-generated method stub 
     return position; 
    } 

public View getView(final int position, View view, ViewGroup parent) { 
final ViewHolder holder; 
if (view == null) { 
    holder = new ViewHolder(); 
    view = inflater.inflate(R.layout.creditunionrow, null); 
    // Locate the TextViews in listview_item.xml 
    holder.Name = (TextView) view.findViewById(R.id.label); 
    holder.cb = (CheckBox) view.findViewById(R.id.check); 

    view.setTag(holder); 
} else { 
    holder = (ViewHolder) view.getTag(); 
} 
// Set the results into TextViews 
holder.Name.setText(worldlist.get(position).getName()); 
// holder.cb.setChecked(worldlist.get(position).getChecked()); 


holder.cb.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
     Selection = ""; 
       count=0; 
       String selecteditems = ""; 
       // TODO Auto-generated method stub 
       if (infodata.get(position).isclicked) { 
        infodata.get(position).isclicked = false; 

       } else { 
        infodata.get(position).isclicked = true; 
       } 
       for (int i = 0; i < infodata.size(); i++) { 
        if (infodata.get(i).isclicked) { 
        //System.out.println("Selectes Are == "+ data[i]); 
         selecteditems = selecteditems + data[i] + ","; 
        count++; 
        } 
       } 
       System.out.println("Selected Are == " + selecteditems); 
       Selection = selecteditems; 
      } 



}); 
if (infodata.get(position).isclicked) { 

    holder.cb.setChecked(true); 
} else { 
    holder.cb.setChecked(false); 
} 




// Listen for ListView Item Click 
view.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View arg0) { 

    } 
}); 

return view; 
} 

    // Filter Class 
    public void filter(String charText) { 
     charText = charText.toLowerCase(Locale.getDefault()); 
     worldlist.clear(); 
     if (charText.length() == 0) { 
      worldlist.addAll(arraylisto); 
     } else { 
      for (InfoRowdata wp : arraylisto) { 
       if (wp.getName().toLowerCase(Locale.getDefault()) 
         .contains(charText)) { 
        worldlist.add(wp); 
       } 
      } 
     } 
     notifyDataSetChanged(); 
    } 

} 

私のモデルクラスは、私が取得しています例外

public class InfoRowdata { 

public boolean isclicked=false; 
public int index; 
public String name; 
/*public String strAmount;*/ 

public InfoRowdata(boolean isclicked,int index,String name/*,String strAmount*/) 
{ 
    this.index=index; 
    this.isclicked=isclicked; 
    this.name=name; 
    /*this.strAmount=strAmount;*/ 
} 


public String getName() { 
    return this.name; 
} 

public void setName(String name) { 
    this.name = name; 
} 


public Boolean getChecked() { 
    return isclicked; 
} 

public void setChecked(Boolean checked) { 
    this.isclicked = checked; 
} 

}

です:

                java.lang.IndexOutOfBoundsException: Invalid index 2, size is 2 
                     at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255) 
                     at java.util.ArrayList.get(ArrayList.java:308) 
                     at My.Profile.activity.UnionActivity$MyAdapter.getView(UnionActivity.java:240) 
                     at android.widget.AbsListView.obtainView(AbsListView.java:2346) 
                     at android.widget.ListView.measureHeightOfChildren(ListView.java:1281) 
                     at android.widget.ListView.onMeasure(ListView.java:1188) 
                     at android.view.View.measure(View.java:18794) 
                     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951) 
                     at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1465) 
                     at android.widget.LinearLayout.measureVertical(LinearLayout.java:748) 
                     at android.widget.LinearLayout.onMeasure(LinearLayout.java:630) 
                     at android.view.View.measure(View.java:18794) 
                     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951) 
                     at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1465) 
                     at android.widget.LinearLayout.measureVertical(LinearLayout.java:748) 
                     at android.widget.LinearLayout.onMeasure(LinearLayout.java:630) 
                     at android.view.View.measure(View.java:18794) 
                     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951) 
                     at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1465) 
                     at android.widget.LinearLayout.measureVertical(LinearLayout.java:748) 
                     at android.widget.LinearLayout.onMeasure(LinearLayout.java:630) 
                     at android.view.View.measure(View.java:18794) 
                     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951) 
                     at android.widget.FrameLayout.onMeasure(FrameLayout.java:194) 
                     at android.view.View.measure(View.java:18794) 
                     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951) 
                     at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1465) 
                     at android.widget.LinearLayout.measureVertical(LinearLayout.java:748) 
                     at android.widget.LinearLayout.onMeasure(LinearLayout.java:630) 
                     at android.view.View.measure(View.java:18794) 
                     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951) 
                     at android.widget.FrameLayout.onMeasure(FrameLayout.java:194) 
                     at com.android.internal.policy.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2643) 
                     at android.view.View.measure(View.java:18794) 
                     at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2100) 
                     at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1216) 
                     at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1452) 
                     at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1107) 
                     at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6013) 
                     at android.view.Choreographer$CallbackRecord.run(Choreographer.java:858) 
                     at android.view.Choreographer.doCallbacks(Choreographer.java:670) 
                     at android.view.Choreographer.doFrame(Choreographer.java:606) 
                     at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844) 
                     at android.os.Handler.handleCallback(Handler.java:739) 
                     at android.os.Handler.dispatchMessage(Handler.java:95) 
                     at android.os.Looper.loop(Looper.java:148) 
                     at android.app.ActivityThread.main(ActivityThread.java:5417) 
                     at java.lang.reflect.Method.invoke(Native Method) 
                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 

をこれは私がSearchさらに午前方法ですEditTextとグラムのリストビュー:

inputSearch.addTextChangedListener(new TextWatcher() 
    { 
     public void afterTextChanged(Editable s) 
     { 
      //Abstract Method of TextWatcher Interface. 
     } 
     public void beforeTextChanged(CharSequence s,int start, int count, int after) 
     { 

     } 
     public void onTextChanged(CharSequence s,int start, int before, int count) 
     { 



      String text = inputSearch.getText().toString().toLowerCase(Locale.getDefault()); 
      adapter.filter(text); 
     } 
    }); 

私が最初に私は、カスタムアダプタでそれをやっていなかった、私はランダムなチェックボックスをチェックしてもチェックのチェックボックスの正しい参照してそれらの検索を適用したい、私は何かが欠けていますどこを知りません検索はうまくいきましたが、検索が適用されるとチェックボックスのチェック状態が失われましたが、今はcustomadapterを使用しています。リストビューを検索する際にチェックボックスの正しい参照を取得するにはどうすればよいですか。私はどんな助けにも非常に感謝しています。私はこの中で二日間過ごしていましたが、すべてのインターネットを検索しましたが、チェックボックスと検索機能を備えたリストビューを実装する例はありませんでした。

答えて

0

このリストの最後に指定されたコレクション内のすべての要素を追加し java.util.ArrayList.addAll(コレクションc)の方法は、それらが指定 コレクションの反復子によって返される順序で。

WRONG

this.arraylisto = new ArrayList<InfoRowdata>(); 
    this.arraylisto.addAll(worldpopulationlist); // Problem Here 

this.arraylisto = new ArrayList<InfoRowdata>(); 
this.arraylisto.addAll(worldlist); // Rectify here 

そして

@Override 
public int getCount() { 
    // TODO Auto-generated method stub 
    return worldlist.size(); 
} 
+1

グレートこれに答える試す秒あなたは空のリストの上に持って、CheckBox使用setOnCheckedChangeListeneronClickListenerを使用していない今、私はすべての例外と検索を得ていないのですが、おかげでたくさん働いている、働いていました。しかし、私はチェックボックスのチェック状態に問題があります。もしあなたがチェックしているチェックボックスの追跡方法をヒントに与えることができれば – user6768912

0

は最初@IntelliJ Amiyaが

関連する問題