Android基础-ListView

高级控件ListView的学习

  • 对AndroidUI的学习也就是对android控件的学习。博主任务在对控件学习当中,我们不要去死记硬背!
    Android中那么多的控件我们也是记不下来的,用到什么控件去搜索什么控件!

LIstView

在使用ListView之前,我们需要思考一下这个控件要用到什么地方?控件构成需要什么? 当我去跟随着这些为什么去学习的时候,我们就能找到其中的答案。

  • 首先,当我们使用QQ 、微信等等的app时候,我们应该注意到我们手指上下滑动的功能吧!它就是我们所说的ListView。
  • 其次,要想实现上面的功能,我们要想到,第一步:我们需要数据,第二步:我们需要ListView展示我们的数据,最后我们还需要把数据给适配上去。理解了这些,我们就可以去学习了!
1、数据

数据非常简单,我们可以通过服务器去获取数据然后进行解析,要么我们自定义数据!

public class MainActivity extends AppCompatActivity {
    private ListView listView;
    private ListViewAdapter adapter;
    private List<String> data;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        listView=findViewById(R.id.list_view);

        data=new ArrayList<>();
        //获取数据
        getData();
        listView=findViewById(R.id.list_view);
        listView.setAdapter(adapter=new ListViewAdapter(this,data));


        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                Toast.makeText(MainActivity.this,"位置"+i,Toast.LENGTH_SHORT).show();
            }
        });
    }
    //初始化数据
    private void getData(){
        for (int i=0;i<200;i++){
            data.add("全保"+i);
        }
    }

}

2、ListView

ListView 和普通的Button、TextView的用法都是一样的,只需要在activity_main.xml中定义即可;我们还可以定制自己ListView。

// 首先我们定义ListView
<ListView
        android:id="@+id/list_view"
        android:divider="@null"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
    </ListView>
3、适配器

适配器是有很多种的(例如:ArrayAdapter、BaseAdapter等等)根据我们的需求自己去选择。

//适配器
public class ListViewAdapter extends BaseAdapter {
    private List<String> listData;
     private LayoutInflater inflater;
    public ListViewAdapter(Context context,List<String> listData) {
        this.listData = listData;
        inflater=LayoutInflater.from(context);
    }

    @Override
    public int getCount() {
        return listData.size();
    }

    @Override
    public Object getItem(int i) {
        return listData.get(i);
    }

    @Override
    public long getItemId(int i) {
        return i;
    }
   //获取每一行的view
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder viewHolder;
        if (convertView==null){
            viewHolder=new ViewHolder();
            convertView=inflater.inflate(android.R.layout.simple_list_item_1,parent,false);
            viewHolder.text1=convertView.findViewById(android.R.id.text1);
            convertView.setTag(viewHolder);
        }else {
            viewHolder=(ViewHolder) convertView.getTag();
        }
        viewHolder.text1.setText(listData.get(position));
        return convertView;
    }

    private class ViewHolder{
        private TextView text1;
    }
}

运行结果:

图片[在这里插入图片描述]

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值