首先要有一個關於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)(還可以製作瀑布流)