Android ListView convertView-ViewHolder

版权声明:本文为Zhang Phil原创文章,请不要转载! https://blog.csdn.net/zhangphil/article/details/84978684
package zhangphil.book;

import android.app.ListActivity;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;

public class MainActivity extends ListActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        ArrayAdapter mArrayAdapter = new ArrayAdapter(this, 0) {
            private ViewHolder holder;
            private String text = null;

            @NonNull
            @Override
            public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {

                if (convertView == null) {
                    convertView = LayoutInflater.from(getContext()).inflate(android.R.layout.simple_list_item_2, null);
                    text = "位置=" + position + " , 新建";

                    holder = new ViewHolder();
                    holder.text1 = convertView.findViewById(android.R.id.text1);
                    holder.text2 = convertView.findViewById(android.R.id.text2);

                    convertView.setTag(holder);
                } else {
                    text = "位置=" + position + " , 复用";
                    holder = (ViewHolder) convertView.getTag();
                }

                holder.text1.setText(this.getItem(position));
                holder.text2.setText(text);

                return convertView;
            }

            @Nullable
            @Override
            public String getItem(int position) {
                return "位置:" + position;
            }

            @Override
            public int getCount() {
                return Integer.MAX_VALUE;
            }
        };

        this.setListAdapter(mArrayAdapter);
    }

    private class ViewHolder {
        public TextView text1;
        public TextView text2;
    }
}

猜你喜欢

转载自blog.csdn.net/zhangphil/article/details/84978684