安卓
- MVP設計模式
- ListView
MVP設計模式
類似Javaweb中的MVC,model view controller
ListView
菜鳥教程🔗
純文字的滑動串列
public class MainActivity extends Activity {
//Model:模型層,即資料源(使用集合來存盤)
private ArrayList<String> mDataList;
//View:視圖層,即滑動串列
private ListView mListView;
//Model:模型層,即配接器
private ArrayAdapter<String> mAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initModel();
initAdapter();
initList();
}
/**
* 初始化模型層
*/
private void initModel() {
mDataList = new ArrayList<String>();
//添加資料
mDataList.add("娘子");
mDataList.add("半島鐵盒");
mDataList.add("西界");
mDataList.add("大碗寬面");
mDataList.add("七里香");
mDataList.add("告白氣球");
mDataList.add("緣分一道橋");
mDataList.add("想自由");
mDataList.add("夜曲");
mDataList.add("青花瓷");
}
/**
* 初始化視圖層
*/
private void initList() {
mListView = (ListView) findViewById(R.id.list_view);
//補充V和P的關聯
mListView.setAdapter(mAdapter);
}
private void initAdapter() {
//引數一:當前的類名.this
//引數二:包含TextView的布局檔案的ID
//引數三:資料源
mAdapter = new ArrayAdapter<String>(MainActivity.this, R.layout.item_layout, mDataList);
}
}
文字+圖片 (最常用)
public class MainActivity extends Activity {
// Model
private ArrayList<String> mtextList;
private ArrayList<Integer> mImageList;
private ArrayList<HashMap<String, Object>> mDataList;
// view
private GridView mGridView;
// M adapter
private SimpleAdapter mSimpleAdapter;
private void initModel() {
mtextList = new ArrayList<String>();
mtextList.add("奔馳");
mtextList.add("寶馬");
mtextList.add("大眾");
mtextList.add("法拉利");
mtextList.add("蘭博基尼");
mtextList.add("瑪莎拉蒂");
mtextList.add("保時捷");
mtextList.add("勞斯萊斯");
mtextList.add("五菱宏光");
mImageList = new ArrayList<Integer>();
mImageList.add(R.drawable.benz);
mImageList.add(R.drawable.bmw);
mImageList.add(R.drawable.dazhong);
mImageList.add(R.drawable.falali);
mImageList.add(R.drawable.lambo);
mImageList.add(R.drawable.maserati);
mImageList.add(R.drawable.porsche);
mImageList.add(R.drawable.rolls);
mImageList.add(R.drawable.wl);
//
mDataList = new ArrayList<HashMap<String, Object>>();
for (int i = 0; i < mtextList.size(); i++) {
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("img", mImageList.get(i));
map.put("txt", mtextList.get(i));
mDataList.add(map);
}
}
private void intiAdaptr() {
String[] keys = new String[] { "img", "txt" };
int[] ids = new int[] { R.id.item_img, R.id.item_txt };
mSimpleAdapter = new SimpleAdapter(MainActivity.this, mDataList,
R.layout.item_layout, keys, ids);
}
private void initView() {
mGridView = (GridView) findViewById(R.id.grid);
mGridView.setAdapter(mSimpleAdapter);
mGridView.setOnItemClickListener(new OnItemClickListener() {
// 引數一:點擊的Item所在的容器控制元件物件
// 引數二:單個Item布局的最外層的布局/控制元件
// 引數三:點擊的item的序號(重要)
// 引數四:id,通常等同于引數三
@Override
public void onItemClick(AdapterView<?> parent, View v,
int position, long id) {
Toast.makeText(MainActivity.this, Integer.toString(position),
Toast.LENGTH_SHORT).show();
}
});
mGridView.setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view,
int position, long id) {
// 長按洗掉
// 先洗掉資料源,再重繪頁面(增加和修改資料同理)
Toast.makeText(MainActivity.this,
"已洗掉" + mDataList.get(position).get("txt").toString(),
Toast.LENGTH_SHORT).show();
mDataList.remove(position); // 洗掉資料
mSimpleAdapter.notifyDataSetChanged(); // 重繪頁面
// 建議最終專案如果要用長按,長按收藏
return true; // 改了true就不會跟點擊沖突了
// Log.d()
}
});
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_main);
initModel();
intiAdaptr();
initView();
}
}
效果如下:

轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/244309.html
標籤:其他
