Android development --- 07 Android list component training

  • Spinner drop-down box
  • ListView list
  • Adapter custom adapter
  • GridView grid view

1.spinner drop-down box

  • Create string-array to load data
    Create array.xml under res folder
<string-array name="sp">
        <item>ps</item>
        <item>h5</item> 
</string-array>
<Spinner
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:spinnerMode="dialog|dropdown"
           android:entries="@array/sp"


 android:spinnerMode="dialog"表示Spinner的样式是dialog
 android:prompt可以设置dialog的标题(注意必须在string资源下引用,
 不然程序会崩掉)      ></Spinner>

Listening function: setOnItemSelectedListener
get value function: getSelectedItem ()

  • Fill the parameters through the adapter.
    Write the myadapter adapter to inherit the key getView method of baseadapter
@Override
    public View getView(int position, View convertView, ViewGroup parent) {
        LayoutInflater inflater=LayoutInflater.from(context);
        View v=inflater.inflate(R.layout.sp_layout,null);
            TextView pername=v.findViewById(R.id.pername);
            TextView perage=v.findViewById(R.id.perage);
            pername.setText(list.get(position).getName());
            perage.setText(list.get(position).getAge()+"");
        return v;
}

Main interface:

sp = findViewById(R.id.sp);
        List<Person> pers=new ArrayList<Person>(); //准备数据
        pers.add(new Person("小红",10));
        pers.add(new Person("小明",12));
        pers.add(new Person("小军",13));
        MyAdapter myAdapter=new MyAdapter(pers,this);//准备适配器
        sp.setAdapter(myAdapter);

2. ListView list and adapter

  • Android's own adapter
private String data[] =
 {"aa","bb","cc","dd","aa","bb","cc","dd","aa","bb","cc","dd","aa","bb","cc","dd"};//假数据
ListView listView = (ListView) findViewById(R.id.listview);//在视图中找到ListView
        ArrayAdapter<String> adapter 
= new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,data);//新建并配置ArrayAapeter
        listView.setAdapter(adapter);

  • Custom adapter inherited from baseadapter
@Override
    public int getCount() {//数据长度
        return list.size();
    }
    @Override
    public Object getItem(int position) { //某一个数据是什么
        return list.get(position);
    }
    @Override
    public long getItemId(int position) { //当前的数据索引
        return position;
    }
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        LayoutInflater inflater=LayoutInflater.from(context);
        View v=inflater.inflate(R.layout.sp_layout,null);
            TextView pername=v.findViewById(R.id.pername);
            TextView perage=v.findViewById(R.id.perage);
            pername.setText(list.get(position).getName());
            perage.setText(list.get(position).getAge()+"");
        return v;
}

Adapt and optimize the viewholder

if (convertView == null) {  
viewHolder = new ViewHolder();  
convertView = LayoutInflater.from(mContext).inflate(R.layout.item,  null);  
            viewHolder.bt1 = (Button) convertView.findViewById(R.id.bt1);  
            viewHolder.bt2 = (Button) convertView.findViewById(R.id.bt2);  
            viewHolder.tv = (TextView) convertView.findViewById(R.id.tv);  
            convertView.setTag(viewHolder);  
        } else {  
            viewHolder = (ViewHolder) convertView.getTag();  
        }  
        //绑定数据
        return convertView;  
    }  

Listview click event setOnItemClickListener
and long press event setOnItemLongClickListener returns true to intercept click events

interface InnerItemOnclickListener {
        void itemClick(View v);
}

private InnerItemOnclickListener mListener;  
写一个InnerItem的监听方法
public void setOnInnerItemOnClickListener(InnerItemOnclickListener listener){  
        this.mListener=listener;  
}  

Add a click event to btn while binding data

viewHolder.bt1.setOnClickListener(this);  
        viewHolder.bt2.setOnClickListener(this);  

Native click event monitoring

@Override  
    public void onClick(View v) {  
        mListener.itemClick(v);  
    } 

In the activity interface;
implement the InnerItemOnclickListener interface

 mAdapter.setOnInnerItemOnClickListener(this);  

public void itemClick(View v) {  
        int position;  
        position = (Integer) v.getTag();  
        switch (v.getId()) {  
        case R.id.bt1:  
            Log.e("内部item--1-->", position + "");  
            break;  
        case R.id.bt2:  
            Log.e("内部item--2-->", position + "");  
            break;  
        default:  
            break;  
        }  

@Override  
    public void onItemClick(AdapterView<?> parent, View view, int position,  
            long id) {  
        Log.e("整体item----->", position + "");  
    }  

3.Gridview grid view

android: numColumns = ”auto_fit” // The number of columns in the GridView is set automatically, you can also fill in the number
android: columnWidth = ”90dp” // The width of each column, which is the width of the item
android: stretchMode = ”columnWidth” // Zoom and Column width and size synchronization
android: verticalSpacing = ”10dp” // Margin between two rows
android: horizontalSpacing = ”10dp” // Margin between two columns
android: cacheColorHint = "# 00000000" // When removing drag The default black background
android: listSelector = "# 00000000" // Remove the yellow background color when selected
android: scrollbars = "none" // Hide the scroll bar of GridView
android: fadeScrollbars = "true" // Set it to true to achieve Automatically hide and show the scroll bar
android: fastScrollEnabled = "true" // GridView appears a button for fast scrolling (it will only be displayed if you scroll at least 4 pages)

The overall usage is similar to Listview, pay attention to the three attributes in bold

Published 15 original articles · praised 11 · visited 1310

Guess you like

Origin blog.csdn.net/qq_44534541/article/details/105460330