“getView” - 项目位置的不断变化,我必须点击两次“项目”

时间:2012-08-14 13:56:32

标签: android android-arrayadapter

我实现了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;

    }

enter image description here

帮助我this link.

1 个答案:

答案 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;