Android中ListView,点击一个item所有item响应

lv.setOnItemClickListener(newAdapterView.OnItemClickListener(){@OverridepublicvoidonI... lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

ConvertEntity convertEntity= list.get(position);

ConvertEntity convertEntity = convertAdapter.getItem(position);
if(convertEntity.getState()==0) {

convertEntity.setState(1);
// convertAdapter.clearAdapter();
}else if(convertEntity.getState()==1){

convertEntity.setState(0);
// convertAdapter.clearAdapter();
}
convertAdapter.notifyDataSetChanged();
}
});
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder = null ;
if(convertView == null){
convertView = layoutInflater.inflate(R.layout.item_convert,null);
viewHolder = new ViewHolder();
viewHolder.tv_convert = (TextView)convertView.findViewById(R.id.tv_item_convert);
viewHolder.tv_convertcenima = (TextView)convertView.findViewById(R.id.tv_item_convertcenima);
viewHolder.tv_convertname = (TextView)convertView.findViewById(R.id.tv_item_convertname);
viewHolder.iv_convert = (ImageView) convertView.findViewById(R.id.iv_item_convertpicture);
viewHolder.rl = (RelativeLayout)convertView.findViewById(R.id.rl_convert);

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

ConvertEntity convertEntity = getItem(position);
viewHolder.tv_convertcenima.setText(convertEntity.getTv_convertcenima());
viewHolder.tv_convertname.setText(convertEntity.getTv_convertname());
viewHolder.tv_convert.setText(convertEntity.getTv_convert());
if(convertEntity.state==0){
viewHolder.rl.setVisibility(View.GONE);
}else if(convertEntity.state==1){
viewHolder.rl.setVisibility(View.VISIBLE);
}
return convertView;
}
展开
 我来答
TS灵I
推荐于2017-09-02 · 超过19用户采纳过TA的回答
知道答主
回答量:45
采纳率:0%
帮助的人:30.8万
展开全部
想问下题主,你点一个item确定是所有的item跟着相应而不是仅有规律性地几个item跟着响应么?我想这个现象是因为convertView的服用引起的。你改变一个item的布局状态(改变一个控件的可见状态),那么会有其他几个复用这个item的布局的item会一起变化。我给的建议是在adapter的getView()方法中,只修改所点击的条目的viewHolder.rl控件的可视状态,同时设置其他未被点击的item的viewHolder.rl控件的可视状态不变。注意,这个后面的“同时”非常重要。我能想到的可行方法:(很有可能会有更好的方法,但本人能力有限只想到这个==题主可以自由发挥)创建一个List<boolean> list集合,集合长度为条目的个数,初始化时先将list里面所有值置为false,意为未被点击。在你的lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

}
});
这个方法中写list.set(position,true);

然后在adapter中的getView()方法中绑定数据的时候先判断if(list.get(position)==true){}。如果是的话再进行viewHolder.rl控件的可视状态相应的改变。最后最重要的一步,在else{}里面实现viewHolder.rl控件的可视状态不变。这样试一下应该就可以了。楼主试一下吧~
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式