listviewのレイアウト
2011年10月13日
多段表示する方法
マジックパケット送信ツール
一覧で選択したマシンに送信する。一覧は編集できる。
ってアプリです。
独自AdapterViewを作る
MyAdapter.java
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 package net.monslab.UDPSend;import java.util.List;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.TextView;public class MyAdapter extends BaseAdapter {private LayoutInflater myInflater;private TextView name;private TextView mac;private TextView port;private TextView broadcast;private List<String[]> list;public MyAdapter(Context context, List<String[]> objects) {super();list = objects;myInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {if (convertView == null ){convertView = myInflater.inflate(R.layout.list_at, null);}name = (TextView)convertView.findViewById(R.id.idName);mac = (TextView)convertView.findViewById(R.id.idMac);broadcast = (TextView)convertView.findViewById(R.id.idBroadcast);port = (TextView)convertView.findViewById(R.id.idPort);String[] str = (String[])this.getItem(position);name.setText(str[0]);mac.setText(str[1]);broadcast.setText(str[2]);port.setText(str[3]);return convertView;}@Overridepublic int getCount() {return list.size();}@Overridepublic Object getItem(int position) {return list.get(position);}@Overridepublic long getItemId(int position) {return position;}public void remove(int position) {list.remove(position);}public int add(String[] data) {int index = -1;if(list.add(data))index = list.indexOf(data);return index;}public void update(int index, String[] data) {list.set(index, data);}}Activityでの操作
リストビューの生成
1234567891011 //リストビューの取得myListView = (ListView) findViewById(R.id.listView1);//DBデータの取得List<String[]> list= macControl.getMacList();//アダプターの生成adapter = new MyAdapter(this,list);//アダプターを設定myListView.setAdapter(adapter);※ レイアウトXMLは前回参照→こちら
挿入
12345678910 String[] addData = new String[]{name, mac, broadcast, port};// アダプターに追加MyAdapter ad = (MyAdapter)myListView.getAdapter();int index = ad.add(addData);// アダプターの変更をリストビューに更新ad.notifyDataSetChanged();// リストビューを再描画myListView.invalidateViews();更新
12345678910 String[] addData = new String[]{name, mac, broadcast, port};// アダプターに追加MyAdapter ad = (MyAdapter)myListView.getAdapter();ad.update(selectedItemPosition, addData);// アダプターの変更をリストビューに更新ad.notifyDataSetChanged();// リストビューを再描画myListView.invalidateViews();削除
123456789 // アダプターから削除MyAdapter ad = (MyAdapter)myListView.getAdapter();ad.remove(selectedItemPosition);// アダプターの変更をリストビューに更新ad.notifyDataSetChanged();myListView.setItemChecked(selectedItemPosition, false);// リストビューを再描画myListView.invalidateViews();
Activityを移動して戻った後に、リストが選択状態にならないのはなぜだろう・・・
Androidしょぼい・・・