我实现了ArrayAdapter
(extends ArrayAdapter
),方法getView不断重绘屏幕,不断更改ListView.
的位置项但这不是唯一的问题。当我想要更改文本时 - 重新排序。除了setOnClickListener
激活该行之外,我必须点击两次
我的来源
public View getView(int position, View convertView, ViewGroup parent) {
UrlItem urlItem = (UrlItem) this.getItem(position);
ViewHolder viewHolder = null;
if (convertView == null) {
convertView = inflater.inflate(R.layout.database_table_item, null);
viewHolder = new ViewHolder();
viewHolder.text = (TextView) convertView
.findViewById(R.id.editText1);
viewHolder.text.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
int getPosition = (Integer) v.getTag();
}
});
convertView.setTag(viewHolder);
convertView.setTag(R.id.editText1, viewHolder.text);
viewHolder.text.setTag(position);
viewHolder.text.setText(urlItem.getUrl());
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
return convertView;
}
帮助我this link.
答案 0 :(得分:4)
当您的视图被回收时(即convertView!= null时),您没有对视图执行任何操作。获取viewHolder后,您需要执行任何特定于位置的操作。从这些方面尝试更多的东西:
if (convertView == null) {
convertView = inflater.inflate(R.layout.database_table_item, null);
viewHolder = new ViewHolder();
viewHolder.text = (TextView) convertView
.findViewById(R.id.editText1);
viewHolder.text.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
int getPosition = (Integer) v.getTag();
}
});
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
viewHolder.text.setTag(position);
viewHolder.text.setText(urlItem.getUrl());
return convertView;