首先要有一个关于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)(还可以制作瀑布流)