listview简单应用之ArrayAdapter(一)

时间:2022-09-29 22:03:20

listview简单应用之ArrayAdapter(一)
listview简单应用之ArrayAdapter(二)
listview 是android的一个很常用的组件,我在学习了一段时间后有了一些自己的体会和理解,根据listview匹配不同的适配器的用法,我会分别整理他们的简单使用,大家可以简单清楚的了解他们的基本用法。

listview是能够自适应数据匹配成相应长度的滑动列表,在使用listview时掌握它的3要素就能够理解它的核心了。

  1. data:将要在listview上展示的列表。
  2. adapter:data和listview之间的桥梁,data先存放在adapter后再继续在listview上展示。(adapter是使用listview时的必备成分)
  3. listview:最后展示数据的滑动列表
    Adapter常用的有ArrayAdapter、SimpleAdapter、和BaseAdapter等。不同的adapter与listview搭配使用时的功能是不同的,最简单的是ArrayAdapter,这里也先讲这个适配器。举个例子。
    在.xml布局中:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" >

    <ListView  android:id="@+id/lv" android:layout_width="fill_parent" android:layout_height="fill_parent"> 
     </ListView>

</RelativeLayout>

在MainActivity.java中:

public class MainActivity extends Activity implements OnItemClickListener, OnItemLongClickListener {

ListView lv;
ArrayAdapter<String> adapter;
ArrayAdapter<String> arrayada;
String[] data = {"喜剧之王","功夫","逃学威龙","周星驰","喜剧之王","功夫","逃学威龙","周星驰","喜剧之王","功夫","逃学威龙","周星驰","喜剧之王","功夫","逃学威龙","周星驰",};

//把数组转换成arraylist,让其能够具有删除数据的功能。

List<String> list = Arrays.asList(data);
List<String> arrayList = new ArrayList<String>(list);
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        lv = (ListView) findViewById(R.id.lv);

        arrayada = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, arrayList);

        /*这里的3个参数分别是this,布局文件,(simple_list_item_1表示设置单行文字显示)和数据源。 * 这一行表示把数据装入到adapter中。*/

        lv.setAdapter(arrayada);
        lv.setOnItemClickListener(this);
        lv.setOnItemLongClickListener(this);


}


    @Override
    public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
        // TODO Auto-generated method stub
        Toast.makeText(MainActivity.this, "欢迎进入!", Toast.LENGTH_SHORT).show();
        Intent intent = new Intent(MainActivity.this,SecondActivity.class);
        startActivity(intent);
    }

    @Override
    public boolean onItemLongClick(AdapterView<?> arg0, View arg1, final int position,
            long arg3) {
        //String aa =(String) arrayList.get(position);
        new AlertDialog.Builder(MainActivity.this)
        .setTitle("温馨提示")
        // 设置对话框标题

        .setMessage("是否删除数据?")
        // 设置显示的内容

        .setPositiveButton("确定",new DialogInterface.OnClickListener() {// 添加确定按钮
                    @Override
                    public void onClick(DialogInterface dialog,int which) {// 确定按钮的响应事件
                        // TODO Auto-generated method stub
                        /*finish();*/
                        arrayList.remove(position);
                        System.out.println("删除:"+list);
                        arrayada.notifyDataSetChanged();
                    }
                })
        .setNegativeButton("不",
                new DialogInterface.OnClickListener() {// 添加返回按钮

                    @Override
                    public void onClick(DialogInterface dialog,
                            int which) {// 响应事件
                        // TODO Auto-generated method stub
                        Log.i("alertdialog", " 请保存数据!");
                    }
                }).show();// 在按键响应事件中显示此对话框
        return true;//**当返回为true时,在长点击的时候,能够屏蔽短的点击事件**
    }

需要注意的是:**当我想删除数据时,对数组进行操作是很麻烦的,所以我在这里要把数组转换成list,list是一集合,可以把它理解成动态有remove、add方法的数组。但是因为用asList(data)这个方法转换后的list是没有remove、add方法的,所以再把list转换成arrayList对其操作。
List list = Arrays.asList(data);//转换
List arrayList = new ArrayList(list);**

listview简单应用之ArrayAdapter(一)

listview简单应用之ArrayAdapter(一)