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;
    }
}

運行結果:

圖片[在這裏插入圖片描述]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章