简单ListView 使用

来源:互联网 发布:jquery java上传文件 编辑:程序博客网 时间:2024/05/17 08:21

首先要有一个关于ListView的Item各个内容的java文件进行数据的获取及使用。

/*demo.java*/public class demo {    String demo;    public demo(String demo){        this.demo = demo;    }    public String getDemo(){        return demo;    }}

然后对activity_main.xml编写

<?xml version="1.0" encoding="utf-8"?><LinearLayout 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"    android:orientation="vertical"    tools:context="com.example.asus.filedemo.MainActivity">    <LinearLayout        android:layout_width="match_parent"        android:layout_height="wrap_content">        <EditText            android:layout_width="0dp"            android:layout_weight="2"            android:layout_height="wrap_content"            android:id="@+id/edit"/>        <Button            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="Send"            android:id="@+id/send"/>    </LinearLayout>        <ListView            android:layout_width="match_parent"            android:layout_height="match_parent"            android:id="@+id/listview">        </ListView></LinearLayout>

得到这样的一个PREVIEW视图,接着对ListView的Item进行编写,新建一个item.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical" android:layout_width="match_parent"android:layout_height="match_parent"><TextView    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:id="@+id/name"/></LinearLayout>

只是要一个TextView的视图,那么xml文件已经创建好了,接着对ListView设置适配器
新建一个DemoAdapter并继承自ArrayAdapter,泛型传入我们的demo.class

public class DemoAdapter extends ArrayAdapter<demo> {    private int resourceId;    public DemoAdapter(Context context, int resource, List<demo> objects) {        super(context, resource, objects);        resourceId = resource;    }    public View getView(int position, View convertView, ViewGroup parent){        demo demo = getItem(position);        View view = LayoutInflater.from(getContext()).inflate(resourceId, null);        TextView textView = (TextView) view.findViewById(R.id.name);        textView.setText(demo.getDemo());        return view;    }}

接着修改MainActivity的代码

public class MainActivity extends AppCompatActivity {    private EditText editText;    private List<demo> mlist = new ArrayList<>();    private DemoAdapter adapter;    private ListView listView;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        editText = (EditText) findViewById(R.id.edit);        listView = (ListView) findViewById(R.id.listview);//得到ListView的实例        Button button = (Button) findViewById(R.id.send);        adapter = new DemoAdapter(MainActivity.this,                R.layout.item,mlist);//这里传入当前上下文,item的布局文件,列表数据源        listView.setAdapter(adapter);        button.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                add();                editText.setText("");//对editText的文本清空            }        });    }    private void add() {        demo demo = new demo(editText.getText().toString());//得到editText的文本        mlist.add(demo);//调用ListView的add()方法进行动态添加        adapter.notifyDataSetChanged();//刷新数据    }}

以上就是一个能够动态添加item的简单listView的应用
接着对listView的文档进行动态删除,可以使用OnItemLongClickListener()方法进行操作,调用listView的remove(传入位置) ,接着
再用 adapter.notifyDataSetChanged();进行数据的刷新

PS:现在基本使用RecyclerView来操作列表(一行代码决定ListView GridView)(还可以制作瀑布流)

原创粉丝点击