ListViewのお話 Vol.2

2014/05/12 15:04:22
消費税が上がっていくらになるかわからなくなったので、


ねこに小判を作りました。


数字を打ち込んでエンター押していくだけで簡単に合計がわかります。

また、『便乗値上げチェッカー』を搭載してるので、

便乗値上げしてる店を発見したら店長を呼び出し、

どういうことなのか、小一時間問い詰めることができるでしょう。



それでは以前のListViewのお話です。

ListViewで一件だけ削除は問題ないというとこまで話をしましたが、

ある条件の物を削除するということをした際に問題が発生しました。

for文でindexを使いremoveする時は、
ListView lv;
// アダプターを取得する
OrenoAdapter adpter = (OrenoAdapter)lv.getAdapter();
if(adpter != null){
 final int max = adp.items.size() - 1;
 // ぐるぐるする
 for(int i = max; i >= 0; i--){
  // itemを取得
  OrenoClass ore = adp.items.get(i);
  if(ore != null){
   // 削除する条件
   if(ore.id == 99){
    adp.remove(s);
   }
  }
 }
 adp.notifyDataSetChanged();
}


という感じにしましょう!

removeをすると、どうやら構造体が上に詰まる(正しい表現がわからん^ω^)ので、

indexの最大値から0まで逆に回せばおk!

0から回してて、消えてないアイテムがあったり、範囲外エラー出てたりちょっと悩まされてた。

謎が解ければなんてことないです。

あとオブジェクトを取り出した後はnullチェックしましょう。

nullチェックしないプログラマはプログラマにあらずです!


つかadpterを取り出した後に、foreachで回した方がよくね?

と思いやってみましたが、

java.util.ConcurrentModificationException

が発生します^ω^

結局removeをやることで、構造体が変わるのでけつから消せってことですね。




気に入ったら押してね





~こんなアプリ出してます~

authored by Noraneko | Comment(0) | Android

Android SDKがおかしぃ。。。

2014/05/06 20:18:56
GWも終わりじゃないですかーやだー!

てことで、ちょっと自分の為に作りたいアプリがあったので

Eclipseで新規プロジェクトで作ろうとしたんだけど、固まりすぎワロタwww












...








いやちょっとワロエないかも...









前回のListViewの続きを書きたかったけど、また今度にします。




86対応エミュとかでSDKをアップデートした結果、

『Android SDK Tools 22.6.3』

ていうのが今入ってて、ちょっと調べた感じだと、

Action Barって言う謎の物体が下位のversionでも使用できるようになって、

Android 4.0(API14)未満に対応しようとすると、変なライブラリをインストールするようになりました。

なのでAndroid 4.0未満に対応しなければ良い話なんだけど

私のAndroidが2.3.3なので、作るアプリは基本2.3以上対応なんですよ。




つうことで今回はエラーでまくりでなんもできなくなった!!

ぷんぷん丸プログラマーの皆様に私なりの対処法を伝授します。

本来なら一子相伝ですが、GW最終日なので全員に教えちゃいます!



まず、この変なライブラリをインストールする為に、

Android SDK Manager -> Extras -> Android Support Library

が必要になるので、インストールしておきます。



ここで注意が必要なのですが

これをインストールした時に、昔からAndroidを開発してた人は

SDK\extras\android\compatibility\v7\appcompat

となっている可能性が高いです。

私がそうでした。

上記のパスになってる人は、

一回アンインストールして、もう一度インストールし直しましょう。

SDK\extras\android\support\v7

になっていれば大丈夫です。


それでは、2.3対応のプロジェクトを作ってみましょう

File -> New -> New Android Application

ここのMinimum Required SDKを

『API 9:Android 2.3(Gingerbread)』

にします。

Action Barはいらないので、Themeは『Holo light』辺りで。



Nextを押して行って、Create Activityで

Empty Actibityを選択します。



Activity Name等を決めてFinishを押します。

そうすると、

WARNING: unable to write jarlist cache file ***\appcompat_v7\bin\jarlist.cache

が出て、応答なしになる可能性がかなり高いです。

右上の×を押してEclipseを閉じましょう。

たまに普通にプロジェクトができる時もありますが、ほぼ応答なしです。

閉じたら開きます。


そうすると、プロジェクトディレクトリ(ここでは『Test』とします。)と

『appcompat_v7』 ディレクトリができています。

しかし、強制終了したので『appcompat_v7』が開けないので

右クリックをして、『Open Project』を選択しましょう。

そうすることによって、

『appcompat_v7』と『Test』に赤い×がつきます。

次に『appcompat_v7』をまた右クリックして、『Build Project』を選択します。

多分赤い×が消えます。

そしたら『Test』を同様に右クリックして、『Build Project』を選択します。

これで『Test』の赤い×が消えます。

もし『Test』の方の赤い×が消えていない場合は、

Eclipseを再起動してもう一度『Build Project』を選択してみて下さい。

何回かやれば消えると思われます。

と言うように、私の環境では結構ひどいことになっております。

しかも同じような条件の新規プロジェクトを作ると、

『appcompat_v7_2』、『appcompat_v7_3』と同じ物が作られてしまいます!










これはひどい^^;








一個あれば大丈夫なので、プロジェクトを右クリックして

Properties -> Android -> Library



から『appcompat_v7_*』を選択して『Remove』、

『Add』を押して既存の『appcompat_v7』を選択して、

その下にある『Apply』を押して一番下の『OK』を押します。

最後に『appcompat_v7_*』を削除しましょう。



今までLibraryの仕様が変わったりしましたが、

プロジェクトを作った際に自動でLibraryを追加するということが弊害になっています。

ブログとか見てると、ダウングレードしてる人とかもいますね...


しかもこういう仕様なので、最初に4.0をターゲットにして

後から2.3もターゲットにするとエラーが出まくってコンパイルできません。

なので現在の最新のSDKで何か作ろうと思ってる方は、

下位互換をするかどうかちゃんと決めないと泣きを見ることになるでしょう。



そんなこんなで、Android開発環境を作り直さないといけないかもしれない^ω^#




気に入ったら押してね





~こんなアプリ出してます~

authored by Noraneko | Comment(0) | Android

ListViewのお話

2014/04/26 01:32:17
GW始まったで~!


それに伴い、Studio nekoでもセール始めてみました^ω^

Google Play ストア見てみてね。


今までのアプリも今月はちょこちょこ更新いれて、

多少は使いやすくしたりとかしてるので試してみてちょんまげ。


ということで、今回はねこったぁを作ってる際に???となったので、

それについてのまとめというか、久々にAndroidのお話をしたいと思います。




まずAndroidのListViewとはなんぞや?




上の画像の赤枠で囲まれたのがListViewという物です。

iPhoneなんかが出てきてよく見かけるようになってると思いますが、

AndroidではListViewと呼びます。

iOSではなんて呼ぶか知らん。

そんで、ListViewを表示するための中身を配列で作ります。

つまりListViewにint型、String型と別の型同士を入れることはできません。

一つの型だけです!!




















多分。


通常は独自の型をclass化して使いますね。

それでこの中身をAdapterと言います。























多分。









それでは、簡単なロジックを見てみましょう。
ListView lv = new ListView(this);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, Strings);
adapter.add = "おまえは";
adapter.add = "もう";
adapter.add = "死んでんねんで!";
lv.setAdapter(adapter);




これだけです。

簡単ですね。


しかしListViewで『ねこったぁ』の様に情報をイロイロ表示しようとすると、

ArrayAdapterをextendした独自のアダプタに独自の構造体を作らなければいけません。

ListView lv = new ListView(this);
ArrayList<OrenoClass> list = new ArrayList<OrenoClass>();
// 中略
for(OrenoClass o : orenoclasses){
 list.add();
}
OrenoAdapter adapter = new OrenoAdapter(this, R.layout.ore, list);
lv.setAdapter(adapter);

public class OrenoAdapter extends ArrayAdapter<OrenoClass>{
 // 中略
}

public class OrenoClass{
 // 中略
}



といった感じになります。


まぁここまでは小学生でも知ってることなので、ListViewから削除したい!

今回はこれについて熱く語りたかったので、筆を執りました。

ListViewのある部分を消す場合には、adapterを取り出し操作することでできます。

OrenoClass ore; // 消したいオブジェクトとする
ListView lv;
// アダプターを取得する
OrenoAdapter adpter = (OrenoAdapter)lv.getAdapter();
// 消す
adpter.remove(ore);
adpter.notifyDataSetChanged();



実にシンプルでわかりやすいですね。



でもある機能を入れた時にその事件は起こったんだ...




まさかあんなことになるなんて...
































ドス!!

























目の前にはただ赤


ぼくの喉からあふれ出す血の赤


最後に思ったのは、一人残った真理はどうするのだろう、ということだった


死体の山の中でただ一人


ぼくは真理が可哀想になった


……真理……











気に入ったら押してね





~こんなアプリ出してます~

authored by Noraneko | Comment(0) | Android

サイトリニューアルしました。

2014/04/22 23:33:18
ほんと暖かくなりましたね。


wheathernewsで温度確認すると、なんと只今





10℃!!!





なんなんでしょう...




The great global warming swindle

っていう動画をオススメするしかない(ゝω・)v



ということで、ちょっとサイトのデザイン変えて見ました。

XP ModeのIE6でも動作確認してるので、ご安心を!

ということで、まだ作りきれてないコンテンツがあるので、

完成したらまたお知らせしたいと思っております!




気に入ったら押してね





~こんなアプリ出してます~

authored by Noraneko | Comment(0) | ひとりごと

最近のMVNO

2014/03/18 11:24:27
やっと暖かくなってきてすっかり春ですね!


でも週末は10℃以下らしいぜ!




まぢ意味わかんない。

Noranekoです。



さてさて、情強の私は一年以上前からMVNOしてますが、

最近はTVCMとかもやってるんですね...



養分様は私達を支えてもらわないといけないので、こっちにきてはいけません!!

ほら、メアド変わると困っちゃうでしょ!!

あと低速だからYouTubeとか見れないよ!!


月に5,000円として年に60,000円ですよね?

3人家族でみんな使ってたとしたら180,000円!!

ドラクエXが月額1,000円(税込)なので、180ヶ月分=15年分!!

すごい結果が出てしまいました。

理研もびっくりです。



ということで、割烹着IT男子の私が通信費まぢつれーわーの方々を幸せに導きましょう。

まず以前も書いたこちらの記事でも軽く読んでみて下さい。

結局その後、IIJmioに移行したのですが全く不満なしです。

しかも2014年4月1日からバンドルクーポンが500MBから1GBに変更になります!

お値段そのまま!(実は消費税分値上げ!!)

ExciteはIIJmioの回線を借りてるので、ちょっとでも安くしたい方はExciteで良いかもしれません。

今はOCNやBIGLOBEなどいろんなとこがMVNOに参入してきてます。

また当時と違うところに、SMSオプションが出来たこと。

このSMSオプションが出来たことにより、前から言われてたセルスタンバイ問題が解決されます。

セルスタンバイに関しては、こちらで丁寧に解説してくれてます。


しかしわざわざSMSオプションをしなくても、偉大な先人のお力をお借りして対策は可能です。

やりましたね!!

自分のXperiaちゃんにセルスタ対策を施したと思ってたのですが、失敗してました^^

framework.jarを単純に上書きして再起動していけるかな?と思ってたんですが、まぁダメですよね。

ソース見るとbusyboxでゴニョゴニョしてるんですよね。

なので、x-Partsを入れてCWMをインスコしてもう一度挑戦しました。

てかCWMの導入がFlashtoolなしでアプリからできるとか便利すぎる!

んでCWM起動して、/systemをmountした状態で偉大な先人のお力をもう一度お借りしました。




出来た!!





今まで圏外100%となってたところがなくなりました!

いいね!


『SMSなんていらねーし、オレは最安で運用したいんだ!』

という方は、セルスタ対策でググって偉大な先人達のお力を借りてがんばれば大丈夫です。





次に電話機能についてです。

なんとIIJmioではクーポン増量同様、4月から音声サービスを始めます!!

おまえIIJmio、IIJmioってIIJmioの回し者かと思われそうですが、残念ながら全く関係ありません。

むしろここまで勧めてるならステマとしてお金をもらっても良いレベルです!!



お金下さい。


話がそれましたが、そういう普通の電話を使うのではなく、



VoIP



と言う技術を使った電話を使います!

MVNOだVoIPだ聞きなれない言葉が出てきますが、あと重要なのが



SIP



です。これらの単語を覚えて、知識の差を見せつけてあげましょう!



そんで今のとこ実績があるのが、

FUSION IP-Phone SMART



050 Plus

です。

どちらも050の番号がもらえます。つまり着信に使えて今までの090とかの番号がいらないってことなんですよ!

しかもFUSION IP-Phone SMARTは月額0円の上、



ユニバーサルサービス料0円!!



ここで、総務省の資料から携帯電話・PHS合計

平成25年9月末 144,605,597

平成25年ユニバーサルサービス料3円





144,605,597 * 3 = 433,816,791円




つまり、毎月4億3千3百万円^q^





下手なオンラインゲームより儲かってますよこれ。

何が言いたいかと言うと、政治家や官僚になってインフラに天下れと言うことです!!

ナプキンを取った者勝ちです!!


話が大幅にずれましたが、これまで説明したMVNOとVoIPを使えば、

携帯でデータ通信あり電話ありを1,000円以下で抑えることが可能です。


奥さん、今まで月に5,000円かかってた物が1,000円になるんですよ?

1年で48,000円も変わるんです!!

48,000円あれば春のコートとかも買えますよ!!










ふえぇぇ...MACKINTOSHのコート14万円もするお...






VoIPを使う上で、SIPアプリが必要です。

最近のAndroidは標準でSIPが搭載してたりしますが、

CSipSimple

が評価高いですね。

自分も最近使ってみましたが初期設定が楽にでき、また細かい設定とかもできます。


こんな感じで数年で急速に変わってきてます。

MVNOの発達でキャリアの土管化と価格低下に繋がりますように!




気に入ったら押してね





~こんなアプリ出してます~

authored by Noraneko | Comment(0) | MVNO
<< 10 11 12 13 14 15 16 17 18 19 >>
BLOG内検索
<< 2019/11 >>
Sun Mon Tue Wed Thu Fri Sat
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30