我有两个fragments
,其中包含列表(ListView
)。在第二个fragment
中,每一行(尽管是最后一行)包含checkbox
。最后一行包含不同的layout
(text
+ button
) - 这是因为我希望在列表结束后显示(不在屏幕底部)。我想要实现的是:当没有选中checkbox
时,最后一行是可见的,否则最后一行是不可见的。但我还没有找到一个好的解决方案..我使用getChild()
但这仅指可见项目。你有什么主意吗?谢谢!
以下是getView
中的ArrayAdapter
方法:
public View getView(final int position, View convertView, final ViewGroup parent) {
ViewHolder holder = null;
final int last = this.getCount()-1;
int theType = getItemViewType(position);
if (convertView == null) {
if (theType == 0) {
convertView = inflater.inflate(layoutResourceId, null);
holder = new ViewHolder();
holder.name = (TextView) convertView
.findViewById(R.id.name);
final CheckBox checkBox = (CheckBox) convertView.findViewById(R.id.checkedDealer);
checkBox.setTag(position);
checkBox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(checkBox.isChecked()){
checked++;
if(checked==1){
parent.getChildAt(last).setVisibility(View.GONE);
notifyDataSetChanged();
}
}
else{
checked--;
if(checked==0){
parent.getChildAt(last).setVisibility(View.VISIBLE);
}
}
}
});
convertView.setTag(holder);
} else {
convertView = inflater.inflate(R.layout.list_search_dealer_footer, null);
}
} else {
holder = (ViewHolder) convertView.getTag();
}
if (theType == 0) {
// object item based on the position
Dealer dealer = data.get(position);
holder.name.setText(dealer.getName());
}
return convertView;
}
答案 0 :(得分:0)
您将项目信息存储在一个数组中,对吧?因此,做一个你想要的方法是有一个布尔字段作为标志。每次选中或取消选中复选框时,您将遍历数组并检查是否有任何选中的值,如果有 - 将标志设置为true,否则设置为false。当您必须给最后一行充气时,您将知道是否需要给它充气或返回。