1

我有一个实现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;

    }

在此处输入图像描述

帮我打开了这个链接。

4

1 回答 1

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;
于 2012-08-14T14:06:29.863 回答