ListView与ArrayAdapter的简单使用
先上效果图
添加listview布局:
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/listview"
>
</ListView>
在主activity中的实现代码:
public class ArrayAdapterActivity extends AppCompatActivity {
private static final String TAG = "ArrayAdapterActivity";
private ListView mListView;
private ArrayAdapter<String> mAdapter;
private List<String> mDatas;
private int mPosition; // 被选择的项
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_array_adapter);
// 初始化listview
mListView = (ListView) findViewById(R.id.listview);
// 设置数据
/*mDataSource = new String[]{"二柱子", "太子", "小樱", "自来也老师", "波风水门", "卡卡西老师", "鼬神",
"凯老师", "小李", "斑爷", "宁次", "雏田女神", "鹿丸", "手菊"};*/
mDatas = new LinkedList<String>();
mDatas.addAll(Arrays.asList(getResources().getStringArray(R.array.data_source)));
// 设置适配器,绑定数据
mAdapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1,
mDatas);
// 为listview设置适配器
mListView.setAdapter(mAdapter);
// 为listview注册上下文菜单
this.registerForContextMenu(mListView);
// 监听长按操作
// mListView.setOnItemLongClickListener(this);
}
/* // 长按项监听
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
mPosition = position;
Log.d(TAG, "onItemLongClick: position=" + mPosition + "id=" + id);
return true;
}*/
// 创建上下文菜单
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
menu.setHeaderTitle("请选择您的操作");
menu.setHeaderIcon(android.R.drawable.ic_menu_info_details);
/*
参数1:组id
参数2:项id
参数3:顺序
参数4:菜单项的内容
*/
menu.add(0, 0, Menu.NONE, "删除该项");
menu.add(0, 1, Menu.NONE, "取消");
}
// 上下文菜单项选择监听
@Override
public boolean onContextItemSelected(MenuItem item) {
// 得到当前被选中的item信息
AdapterView.AdapterContextMenuInfo menuInfo = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
mPosition = menuInfo.position;
switch (item.getItemId()) {
case 0:
String sobj = mListView.getAdapter().getItem(mPosition).toString();
mAdapter.remove(sobj); // 调用适配器取删除一项
Log.d(TAG, "onContextItemSelected: 删除该项postion=" + mPosition + "sobj:" + sobj);
return true;
case 1:
Log.d(TAG, "onContextItemSelected: 取消");
return false;
}
return super.onContextItemSelected(item);
}
}
strings.xml
<string-array name="data_source">
<item>二柱子</item>
<item>太子</item>
<item>小樱</item>
<item>自来也老师</item>
<item>波风水门</item>
<item>卡卡西老师</item>
<item>鼬神</item>
<item>凯老师</item>
<item>小李</item>
<item>斑爷</item>
<item>宁次</item>
<item>雏田女神</item>
<item>鹿丸</item>
<item>手菊</item>
</string-array>
如有疑问欢迎指出交流!谢谢!