我有一个listview,我需要动态地将视图添加到listview行。我已经这样做但动态添加的视图有一个复选框。 因此,例如,如果我在列表视图的一行中添加了两个动态视图,当我选中一个复选框时,另一个必须取消选中。无论动态视图的数量是多少,一次只能选择一个复选框。
这是我用来将动态视图添加到listview的行及其在适配器的getview中的代码。
if (commutes.get(position).types.size() != 0) {
viewHolder.parentPanel.setVisibility(View.VISIBLE);
viewHolder.parentPanel.removeAllViews();
for (i = 0; i < commutes.get(position).types.size(); i++) {
// inflate child
View item = inflater.inflate(R.layout.childview, null);
CheckBox chk = (CheckBox) item.findViewById(R.id.ck);
int newId=Integer.parseInt(position+""+i);
chk.setId(newId);
if(mChecked.contains(newId))
{
chk.setChecked(true);
}
else
{
chk.setChecked(false);
}
chk.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
CheckBox cb = (CheckBox) v;
if (cb.isChecked()) {
mChecked.add(cb.getId());
} else {
mChecked.remove(mChecked.indexOf(cb.getId()));
}
}
});
TextView rupeeSymbol = (TextView) item.findViewById(R.id.tvRupeesSymbol);
rupeeSymbol.setTypeface(AppUtil.getINRTypeFace());
TextView rupees = (TextView) item.findViewById(R.id.tvRupees);
TextView kms = (TextView) item.findViewById(R.id.tvkm);
rupees.setText(Html.fromHtml("<b>" + commutes.get(position).types.get(i).price + "</b>" +
"<small>" + " for " + "</small>"));
kms.setText(Html.fromHtml("<b>" + commutes.get(position).types.get(i).kms + "</b>" +
"<small>" + " (" + commutes.get(position).types.get(i).free_text + ")" + "</small>" + "<br />"));
int viewId = position + i;
item.setId(viewId);
viewHolder.parentPanel.addView(item);
}
} else {
viewHolder.parentPanel.setVisibility(View.GONE);
}
对于下面的复选框功能,声明了代码
ArrayList<Integer> mChecked=new ArrayList<Integer>();
这是适配器的视图。
private static class ViewHolder {
LinearLayout parentPanel;
TextView locationSelected;
TextView price;
TextView carName;
}
这是子视图的xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:id="@+id/relativeLayout"
tools:context=".CommuteActivity">
<TextView
android:id="@+id/tvRupeesSymbol"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_marginLeft="10dp"
android:gravity="center_vertical"
android:text="`"
android:textColor="@color/text_dark_grey"
android:textSize="16sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="14sp"
android:layout_toRightOf="@+id/tvRupeesSymbol"
android:gravity="center"
android:id="@+id/tvRupees"
android:layout_marginLeft="5dp"
android:layout_gravity="center_vertical"
android:text="ddddddd"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="14sp"
android:id="@+id/tvkm"
android:layout_toRightOf="@+id/tvRupees"
android:gravity="center_vertical"
android:layout_gravity="center"
/>
<CheckBox
android:id="@+id/ck"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="10dp"
android:layout_alignParentRight="true"
android:layout_gravity="center"
android:src="@drawable/tick"/>
</RelativeLayout>