2016-08-09 6 views
0

프로그래밍 방식으로 행의 높이를 설정하고 있습니다. 그러나이 작업을 수행 한 후 다른 항목을 클릭 할 때까지 내 ListView의 첫 번째 항목을 클릭하면 멈 춥니 다. 그래야만 기능이 시작됩니다. 레이아웃 매개 변수를 설정하지 않으면 제대로 작동합니다. 나는 정말 당황 스럽다. 다음은 레이아웃을 설정하는 위치입니다.안드로이드 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)으로 변경하면 작동합니다.