2014-03-25 99 views
3

我希望你們中的一些可以幫我這個:定製的ListView與單選按鈕單項選擇

我得到 2 textviews和1個單選按鈕,自定義列表視圖。

我希望把它作爲一個單一的選擇,但每次我 點擊該列表視圖一個項目,它並不會從其他單選按鈕 「檢查」。

我的XML代碼:

<LinearLayout 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" > 

    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" > 

     <TextView 
      android:id="@+id/tvMaterialName" 
      android:layout_width="250dp" 
      android:layout_height="fill_parent" 
      android:padding="5dp" 
      android:text="MaterialName" 
      android:textSize="35px" /> 

     <TextView 
      android:id="@+id/tvMaterialNo" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:padding="5dp" 
      android:text="MaterialNo" 
      android:textSize="1px" 
      android:visibility="invisible" /> 
    </LinearLayout> 

    <RadioButton 
     android:id="@+id/rdBtn" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:focusable="false" 
     android:checked="false" /> 
</LinearLayout 

而且我onItemClickListener:

searchList.setOnItemClickListener(new OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> parent, View v, 
       int position, long id) { 

      LinearLayout item_view = (LinearLayout) v; 
      RadioButton itemcheck = (RadioButton) item_view 
        .findViewById(R.id.rdBtn); 

      itemcheck.setChecked(true); 
      if (itemcheck.isChecked()) { 
       itemcheck.setChecked(true); 
      } else { 
       itemcheck.setChecked(false); 
      } 
      } 

    }); 

我getView()在我的適配器

@Override 
public View getView(final int position, View convertView, ViewGroup parent) { 
    final ViewHolder viewHolder; 
    final Materials materialItem = getItem(position); 
    parent.setClickable(true); 

    LayoutInflater inflater = (LayoutInflater) context 
      .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    if (convertView == null) { 

     convertView = inflater.inflate(R.layout.d, null, false); 
     viewHolder = new ViewHolder(); 
     viewHolder.tvMaterialName = (TextView) convertView 
       .findViewById(R.id.tvMaterialName); 
     viewHolder.tvMaterialNo = (TextView) convertView 
       .findViewById(R.id.tvMaterialNo); 

     convertView.setTag(viewHolder); 

    } else { 
     viewHolder = (ViewHolder) convertView.getTag(); 

    } 

    viewHolder.tvMaterialName.setText(materialItem.getMaterialName()); 
    viewHolder.tvMaterialNo.setText(materialItem.getMaterialNo()); 

    return convertView; 

感謝您的幫助

+0

CustomAdapter的'getView()'的後代碼。 – user370305

+0

把'getView'代碼 –

+0

什麼是你的列表類型,我的意思是列表中的項目。 –

回答

5

請嘗試像這樣:

public class CheckedLinearLayout extends RelativeLayout implements 
    Checkable { 

private boolean isChecked; 
private List<Checkable> checkableViews; 

public CheckedLinearLayout (Context context, AttributeSet attrs, 
     int defStyle) { 
    super(context, attrs, defStyle); 
    initialise(attrs); 
} 

public CheckedLinearLayout (Context context, AttributeSet attrs) { 
    super(context, attrs); 
    initialise(attrs); 
} 

public CheckedLinearLayout (Context context, int checkableId) { 
    super(context); 
    initialise(null); 
} 

public boolean isChecked() { 
    return isChecked; 
} 

public void setChecked(boolean isChecked) { 
    this.isChecked = isChecked; 
    for (Checkable c : checkableViews) { 
     c.setChecked(isChecked); 
    } 
} 
public void toggle() { 
    this.isChecked = !this.isChecked; 
    for (Checkable c : checkableViews) { 
     c.toggle(); 
    } 
} 

@Override 
protected void onFinishInflate() { 
    super.onFinishInflate(); 

    final int childCount = this.getChildCount(); 
    for (int i = 0; i < childCount; ++i) { 
     findCheckableChildren(this.getChildAt(i)); 
    } 
} 

/** 
* Read the custom XML attributes 
*/ 
private void initialise(AttributeSet attrs) { 
    this.isChecked = false; 
    this.checkableViews = new ArrayList<Checkable>(5); 
} 

/** 
* Add to our checkable list all the children of the view that implement the 
* interface Checkable 
*/ 
private void findCheckableChildren(View v) { 
    if (v instanceof Checkable) { 
     this.checkableViews.add((Checkable) v); 
    } 

    if (v instanceof ViewGroup) { 
     final ViewGroup vg = (ViewGroup) v; 
     final int childCount = vg.getChildCount(); 
     for (int i = 0; i < childCount; ++i) { 
      findCheckableChildren(vg.getChildAt(i)); 
     } 
    } 
} 
} 
+0

謝謝!它的工作:D! – Camo

+0

請把你的完整代碼放在這裏:請 –