リストビューについての質問

58 views
Skip to first unread message

giogiokuma

unread,
Aug 20, 2013, 9:19:17 PM8/20/13
to android-grou...@googlegroups.com
お世話になります。
giogiokumaと申します。

勉強途中のプロジェクトでリストビューをつくってそこからウェブビューに飛ばすようにしようとしています。
下のコードで、ログの変わりに"test1", "test2","test3","test4"のウェブビューのページに飛ばすにはどうしたらいいのでしょうか。何ぶん初心者ですので、なるべく簡単に機能を追加できればと思っております。


package com.example.myactivity;


import android.app.Activity;

import android.os.Bundle;

import android.util.Log;

import android.view.View;

import android.widget.AdapterView;

import android.widget.ArrayAdapter;

import android.widget.ListView;


public class MyActivity extends Activity {

private String[] mStrings = {"test1", "test2", "test3", "test4" };

@Override

public void onCreate(Bundle savedInstanceState ){

super.onCreate(savedInstanceState);

ListView lv = new ListView(this);

setContentView(lv);

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mStrings);

lv.setAdapter(adapter);

lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {

public void onItemClick(AdapterView parent, View view, int position, long id) {

String get_parent = (String)parent.getClass().getSimpleName();

String get_position = String.valueOf(position);

String get_id = String.valueOf(id);

Log.d("tag", String.format("onItemClick: %s", get_parent));

Log.d("tag", String.format("onItemClick: %s", get_position));

Log.d("tag", String.format("onItemClick: %s", get_id));

}

});

}

}

Message has been deleted

NickQ

unread,
Aug 21, 2013, 9:46:36 PM8/21/13
to android-grou...@googlegroups.com
NickQです。
 
的を外していたかもしれないので、連投失礼します。
 
・WebViewで表示したいのでしたら
 WebViewのフラグメントもしくはActivityを呼んで(Intent時にURLを渡して)表示という事が出来ます。
 
・ArrayAdapterで渡しているString以外にも渡したい項目があるのでしたら
 自作のAdapterを作る方が何かと小回りが利いて良いかと思います。
 その自作のAdapterでBean(データ保持用のクラス)を渡してあげる方法もあります。
 
  もしとっつきにくい場合は、simple_list_item_2というのが有ってリストに2個のデータが渡せます
 タイトル(表示文字列)とURLを渡しておいてリストのレイアウト側でURLを非表示にして
 ItemClickで取得してIntentという裏ワザもありますが。
 

2013年8月21日水曜日 10時19分17秒 UTC+9 giogiokuma:

giogiokuma

unread,
Aug 22, 2013, 12:17:48 AM8/22/13
to android-grou...@googlegroups.com
NickQさん、

いつもお世話になります。

クリックした時にWebViewを呼ぶには、フラグメントかIntentでURLを渡して表示する方法があるのですね。

本番では4項目をArrayAdapterに渡すのではなく78項目を扱うので、自作のAdapterを作る方がいいということですね。

できるかどうかわからないけれど、チャレンジしてみます。

simple_list_item_2はリストに2個のデータが渡せるのですね。なるほど。それは便利ですね。

知らないことが多くて一歩一歩という感じですが、アドバイスして頂いて目からうろこが落ちる感じです。
感謝です。ありがとうございます。がんばって形にしなければ。。

giogiokuma

NickQ

unread,
Aug 28, 2013, 11:19:49 PM8/28/13
to android-grou...@googlegroups.com
こんにちは。
 
>本番では4項目をArrayAdapterに渡すのではなく78項目を扱うので、自作のAdapterを作る方がいいということですね。
が気になったので追記させて頂くと
 
ArrayAdapterで利用するのは、ArrayListなどです。
ArrayListは、Object(クラスなど)をリスト化します、この場合は
 
Objectがリンク先の名前とリンク先のURLと二種類の情報を保持している場合という事でした
例えばListViewの1アイテム中に上記の名前とURLを渡して表示したい場合は、最初の使い方では出来ないので
(1アイテムに付き文字列を一つという感じなので)データ保持するクラス(セッター、ゲッター)をArrayListにして
ArrayAdapterで利用させるという感じですね。
 
DataClass{
 表示名
 URL
}
 
ArrayList ← DataClassをAdd
  DataClass
  DataClass
  DataClass
  DataClass
  DataClass
 
ArrayAdapter ← ArrayList 紐付け
 
ListView ← ArrayAdapter 紐付け
 
という関係で、表示や処理などを1アイテム間に処理する為にArrayAdapterに記述します。
 
ArrayAdapterは理解するまでにちょっと癖があるので頑張って下さい。

2013年8月22日木曜日 13時17分48秒 UTC+9 giogiokuma:

giogiokuma

unread,
Aug 31, 2013, 8:03:34 AM8/31/13
to android-grou...@googlegroups.com
NickQさん、
お世話になります。メールのお返事遅れてすいません。
全部説明して頂いて助かります。


>ArrayAdapterで利用するのは、ArrayListなどです。
>ArrayListは、Object(クラスなど)をリスト化します…

ArrayListのジェネリクス機能を使ってObjectをリスト化するのかなあという感じです。
なんでリスト化するのにArrayListを使わないとだめなのだろう? 
単なるListじゃだめなんですか?
根本的に理解しきれないぼんやり感(笑)があります。

>…(1アイテムに付き文字列を一つという感じなので)… 
そうなんですね〜。
>データを保持するクラス(セッター、ゲッター)をArrayListにして
ArrayAdapterで利用させる…
うーん。そうなんですね。


ArrayAdapterはいろいろテクニックがいるんですね。やっぱり一筋縄ではいかないなぁ〜。
スッキリ理解するのにはもう少し時間が必要な気がします。
きっと経験を積むとクリアになるのですね。
でも説明していただき、やっぱり目から鱗が落ち、助かっています。ありがとうございます。

ところで、Androidの会合はいつやりますか。みんな忙しいのかな。
猫会議みたいで楽しみにしています。

NickQ

unread,
Sep 1, 2013, 9:25:20 PM9/1/13
to android-grou...@googlegroups.com
giogiokumaさん
 
こんにちは。
 
結論からすると、個人的に使いやすいからです。
ArrayListはListをインターフェースとしていますので実際は同じ扱いが出来る部分が
多いですが、ArrayListの特徴としては「n番目の要素を取りだすのが早い」という事です。
 
個人的な主観で申し訳なく思いますが
 
Adapterに紐付けたArrayListはプログラム中で利用する事が有って
その時にKeyで検索したりn番目を抜き出したりと割と便利な訳です。
(Listでも出来ない事は無いですが)
 
Listとの違いについては割愛しますが、ListでもOKです。
 

2013年8月31日土曜日 21時03分34秒 UTC+9 giogiokuma:

giogiokuma

unread,
Sep 2, 2013, 8:18:22 AM9/2/13
to android-grou...@googlegroups.com

NickQさん、
こんにちは。
お世話になります。

>Adapterに紐付けたArrayListはプログラム中で利用する事が有って
>その時にKeyで検索したりn番目を抜き出したりと割と便利な訳です。

それは便利ですね。と言いたいのはやまやまですが、まだ経験不足でその便利さがわからないです。
すいません。。。サクサク使えるといいんですが。。


アドバイスをいただく毎に、一歩ずつ前に進んでいる気がします。

ありがとうございます。

giogiokuma
Message has been deleted

giogiokuma

unread,
Sep 6, 2013, 8:48:30 PM9/6/13
to android-grou...@googlegroups.com
NickQさん、
大変お世話になります。いつも教えて頂くばかりで恐縮なんですが。

import android.R;
の使い方って今ひとつ分からないのですが、
例えばimport android.R;を入れると自作のmain.xmlレイアウトを読み込めないので、削除しました。

そうすると併用してandroid.R.layout.simple_list_item_1を使おうとすると今度はこちらが使えなくなります。

これはどちらか一つを使うということなのでしょうか。

自分の理解力の範囲で質問しているので、変なことを言っていたらごめんなさい。

giogiokuma

giogiokuma

unread,
Sep 7, 2013, 11:10:33 PM9/7/13
to android-grou...@googlegroups.com
すいません。

なんとか自分で解決できそうです。
R.javaの理解不足でした。。。



2013年9月7日土曜日 9時48分30秒 UTC+9 giogiokuma:

NickQ

unread,
Sep 8, 2013, 8:37:48 PM9/8/13
to android-grou...@googlegroups.com
giogiokumaさん
 
こんにちは。
 
回答出来なくてすいません。
 
<自分のパッケージ>.rは、アプリ内のリソースを対象とします。
android.RはSDK内で事前定義している物となります、主に使うのは事前定義のレイアウトや
アイコンのリソースです。
 
ソース中で、rから書き出すとEcripseの補完でインポートされている物から候補が上がります
やり易いのは、import android.R;を消してandroid.R~と直接ソースに記述して
アプリ内のrに関してインポートしてあげれば良いかなと思います。
 
当然、両方インポートしたらEcripseに怒られます。

2013年9月8日日曜日 12時10分33秒 UTC+9 giogiokuma:

giogiokuma

unread,
Sep 9, 2013, 8:23:10 AM9/9/13
to android-grou...@googlegroups.com

NickQさん、
こんにちは。
お忙しいところお返事していただきありがとうございます。

最初はimport android.R;が自然にできてしまいその度に消していましたが、何度もやっているうちに参照できなくなって、エラーになってしまいました。

それで似たようなケースをwebで検索してみると、R.javaなどがpackageに依存していてソースの中で参照できずにエラーになることが分かりました。調べてみるとgen以下に同じ名前のパッケージがあって、そこにR.javaとBuildConfig.javaが自動的にできることが分かりました。

質問した後で、それが分かって、「すいませんでした」という結果になりました。

でも、壁にぶつかりながら(ほとんど潰れてしまっていますが 笑)、Androidが面白くなってきました。

giogiokuma
Reply all
Reply to author
Forward
0 new messages