2016-08-09 2 views
0

私のリストビューの行の高さをプログラムで設定しています。ただし、これを行った後、別のアイテムをクリックするまで、ListViewの最初のアイテムをクリックするとハングアップします。それだけが機能し始めます。レイアウトパラメータを設定しないとうまく動作します。私は本当に困惑しています。どんな助けも素晴らしいでしょう。レイアウトを設定する場所は次のとおりです。Android ListView setLayoutParamsが最初の項目をクリックすると、ハングアップする

@Override 
    public View getView(final int position, View convertView, ViewGroup parent) { 
     ViewHolder viewHolder = null; 
     //Get the TextView and CheckBox of each row 
     if (convertView == null) { 
      LayoutInflater inflator = context.getLayoutInflater(); 
      convertView = inflator.inflate(R.layout.row, null); 
      viewHolder = new ViewHolder(); 
      viewHolder.name = (TextView) convertView.findViewById(R.id.text1); 
      viewHolder.checkBox = (CheckBox) convertView.findViewById(R.id.check); 
      viewHolder.checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 

       @Override 
       public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
        int getPosition = (Integer) buttonView.getTag(); // Here we get the position that we have set for the checkbox using setTag. 
        list.get(getPosition).setChecked(buttonView.isChecked()); // Set the value of checkbox to maintain its state. 
       } 
      }); 
      convertView.setTag(viewHolder); 
      convertView.setTag(R.id.check, viewHolder.checkBox); 
     } else { 
      viewHolder = (ViewHolder) convertView.getTag(); 
     } 
     viewHolder.checkBox.setTag(position); 

     //Set row height to height of the action bar *************CODE IN QUESTION 
     final TypedArray styledAttributes = getContext().getTheme().obtainStyledAttributes(
       new int[] { android.R.attr.actionBarSize }); 
     int mActionBarSize = (int) styledAttributes.getDimension(0, 0); 
     styledAttributes.recycle(); 
     convertView.setLayoutParams(new AbsListView.LayoutParams(AbsListView.LayoutParams.WRAP_CONTENT, mActionBarSize)); 
     convertView.requestLayout(); //**************************CODE IN QUESTION 

     //Set name and state of checkbox 
     viewHolder.name.setText(list.get(position).getName()); 
     viewHolder.checkBox.setChecked(list.get(position).IsChecked()); 

     final ViewHolder holder = (ViewHolder) convertView.getTag(); 

     final ListView lv = (ListView) parent; 

答えて

0

自分自身で解決しました。 convertView.setLayoutParamsconvertView.setMinimumHeight(mActionBarSize)に変更して動作します。

関連する問題