Android界面开发基础---listview和recycleview


一、ListView

使用系统内置的布局

public class MainActivity extends AppCompatActivity {
    private ListView listView;
    private List list = new ArrayList();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        String [] s = {"a","b","c"};

        listView = findViewById(R.id.listpro_listview);

        listView.setAdapter(new ArrayAdapter<String>(MainActivity.this,
                android.R.layout.simple_list_item_1,
                s
                ));
    }
}

android.R.layout.simple_list_item_1是系统内置的布局文件,只能显示一个文本值。
在这里插入图片描述

使用自定义的布局

mainactivity:

public class MainActivity extends AppCompatActivity {
    private ListView listView;
    private List<Person> list = new ArrayList();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        initPerson();

        listView = findViewById(R.id.listpro_listview);

        MyAdapter adapter = new MyAdapter(MainActivity.this,R.layout.item,list);

        listView.setAdapter(adapter);
    }

    private void initPerson() {

        for (int i = 0;i<2;i++){
            Person p1 = new Person(R.drawable.ic_launcher_background,"ll");
            list.add(p1);
        }
    }


}
public class MyAdapter extends ArrayAdapter<Person> {
    private int resouseId;
    public MyAdapter(Context context, int layout, List<Person> list){
        super(context,layout,list);
        resouseId = layout;
    }

    @NonNull
    @Override
    public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
        Person person = getItem(position);

        convertView = LayoutInflater.from(getContext()).inflate(resouseId,parent,false);
        ImageView imageView = convertView.findViewById(R.id.listpro_iamgeview);
        TextView textView = convertView.findViewById(R.id.listpro_textview);

        imageView.setImageResource(person.getImageId());
        textView.setText(person.getName());
        return convertView;
    }
}

在这里插入图片描述

二、RecycleView

使用recycleview需要先导包:
需要在app/build.gradle中引入,具体代码如下:

implementation 'androidx.recyclerview:recyclerview:1.1.0'
public class Myadapter extends RecyclerView.Adapter<Myadapter.MyViewHolder> {

    private Context context;
    private List<Beautifu_Person> personlist;

    public Myadapter(Context context, List<Beautifu_Person> list) {
        this.context = context;
        this.personlist = list;
    }

    @NonNull
    @Override
    public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

        View view = View.inflate(context,R.layout.item_view_recycle,null);
        return (new MyViewHolder(view)) ;
    }

    @Override
    public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
        Beautifu_Person bp = personlist.get(position);
        holder.imageView.setImageResource(bp.getImageId());
        holder.textView.setText(bp.getName());
    }

    @Override
    public int getItemCount() {
        return personlist == null? 0:personlist.size();
    }

    public class MyViewHolder extends RecyclerView.ViewHolder{

        private ImageView imageView;
        private TextView textView;
        public MyViewHolder(@NonNull View itemView) {
            super(itemView);

            imageView = itemView.findViewById(R.id.item_imageview_recycle);
            textView = itemView.findViewById(R.id.item_textview1_recycle);
        }
    }
}
public class MainActivity extends AppCompatActivity {

    private RecyclerView rv;
    private List<Beautifu_Person> list = new ArrayList<>();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        rv = findViewById(R.id.recycleview);

        initPerson();

//        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
//        rv.setLayoutManager(linearLayoutManager);

//        GridLayoutManager gridLayoutManager = new GridLayoutManager(this,3);
//        rv.setLayoutManager(gridLayoutManager);

        StaggeredGridLayoutManager staggeredGridLayoutManager = new StaggeredGridLayoutManager(3,
                StaggeredGridLayoutManager.VERTICAL
                );
        rv.setLayoutManager(staggeredGridLayoutManager);
        Myadapter myadapter = new Myadapter(MainActivity.this,list);

        rv.setAdapter(myadapter);
    }


    public void initPerson(){
        for (int i = 0;i<7;i++) {
            Beautifu_Person mv2 = new Beautifu_Person(R.drawable.meinv4, "mv2");
            list.add(mv2);

            Beautifu_Person mv3 = new Beautifu_Person(R.drawable.meinv5, "mv3");
            list.add(mv3);

            Beautifu_Person mv4 = new Beautifu_Person(R.drawable.meinv6, "mv4");
            list.add(mv4);

            Beautifu_Person mv5 = new Beautifu_Person(R.drawable.meinv7, "mv5");
            list.add(mv5);

            Beautifu_Person mv6 = new Beautifu_Person(R.drawable.meinv9, "mv6");
            list.add(mv6);
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值