質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

解決済

2回答

9000閲覧

listでの表示の際に3つの項目を表示したいです。

edoooooo

総合スコア476

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

0クリップ

投稿2017/04/02 17:07

下の画像のようなMainActivityで表示されるTodolistに
"title"(タイトル), "content"(内容),"data"(期限)のうち"title","content"の2つしか表示させることができないのですが、data(期限)を表示させるには、どうすればいいのでしょうか?

イメージ説明

//itemを読み込む

java

1 // ListView 用アダプタ 2 SimpleAdapter mAdapter = null; 3 // ListView に設定するデーた 4 List<Map<String, String>> mList = null; 5 6 7 @Override 8 protected void onCreate(Bundle savedInstanceState) { 9 super.onCreate(savedInstanceState); 10 setContentView(R.layout.activity_main); 11 12 // ListView 用アダプタのリストを生成 13 mList = new ArrayList<Map<String, String>>(); 14 15 // ListView 用アダプタを生成 16 17 mAdapter = new SimpleAdapter( 18 this, 19 mList, 20 android.R.layout.simple_list_item_2, 21 new String [] {"title", "content","data"}, 22 new int[] {android.R.id.text1, android.R.id.text2} 23 ); 24 25 // ListView にアダプターをセット 26 ListView list = (ListView)findViewById(R.id.listView); 27 list.setAdapter(mAdapter); 28 29 // ListView のアイテム選択イベント 30 list.setOnItemClickListener(new AdapterView.OnItemClickListener() {

java

1 protected void onResume() { 2 super.onResume(); 3 4 // ListView 用アダプタのデータをクリア 5 mList.clear(); 6 7 // アプリの保存フォルダ内のファイル一覧を取得 8 String savePath = this.getFilesDir().getPath().toString(); 9 File[] files = new File(savePath).listFiles(); 10 // ファイル名の降順でソート 11 Arrays.sort (files, Collections.reverseOrder()); 12 // テキストファイル(*.txt)を取得し、ListView用アダプタのリストにセット 13 for (int i=0; i<files.length; i++) { 14 String fileName = files[i].getName(); 15 if (files[i].isFile() && fileName.endsWith(".txt")) { 16 String title = null; 17 String content = null; 18 String data=null; 19 20 // ファイルを読み込み 21 try { 22 // ファイルオープン 23 24 25 26 InputStream in = this.openFileInput(fileName); 27 BufferedReader reader = new BufferedReader(new InputStreamReader(in, "UTF-8")); 28 // タイトル(1行目)を読み込み 29 title= reader.readLine(); 30 31 32 // 内容(2行目以降)を読み込み 33 /**char[] buf = new char[(int)files[i].length()]; 34 int num = reader.read(buf); 35 content = new String(buf, 0, num); 36 **/ 37 38 content = reader.readLine(); 39 40 data=reader.readLine(); 41 42 43 // ファイルクローズ 44 reader.close(); 45 in.close(); 46 } catch (Exception e) { 47 Toast.makeText(this, "error", Toast.LENGTH_LONG).show(); 48 } 49 50 // ListView用のアダプタにデータをセット 51 Map<String, String> map = new HashMap<String, String>(); 52 map.put("filename", fileName); 53 map.put("title", title); 54 map.put("content", content); 55 map.put("data",data); 56 mList.add(map); 57 } 58 }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

単純にTextViewを複数表示させる場合であればSimpleAdapterでもできますが、
TextViewやImageView等混在させたりしたいのであればをArrayAdapterを継承し自身でクラスを作成してください。

なお、SimpleAdapterの場合で2つ以上のTextViewを利用したい場合は独自でlayout組んで適応してください。 android.R.layout.simple_list_item_2はTextViewが二つしかないため無理です。

SimpleAdapterで例えば3つのTextViewを利用する場合。

xml

1<LinearLayout 2 xmlns:android="http://schemas.android.com/apk/res/android" 3 android:layout_width="match_parent" 4 android:layout_height="wrap_content" 5 android:orientation="vertical"> 6 <TextView 7 android:id="@android:id/text1" 8 android:layout_width="wrap_content" 9 android:layout_height="wrap_content"/> 10 <TextView 11 android:id="@android:id/text2" 12 android:layout_width="wrap_content" 13 android:layout_height="wrap_content"/> 14 <TextView 15 android:id="@+id/text3" 16 android:layout_width="wrap_content" 17 android:layout_height="wrap_content"/> 18</LinearLayout>

Java

1ListView listView = (ListView)findViewById(android.R.id.list); 2ArrayList<Map<String,String>> arrayList = new ArrayList<>(); 3Map<String,String> item = new HashMap<>(); 4item.put("text1","text1"); 5item.put("text2","text2"); 6item.put("text3","text3"); 7arrayList.add(item); 8 9SimpleAdapter adapter = new SimpleAdapter(this, 10 arrayList, 11 R.layout.row, //独自で定義したlayoutを適応する 12 new String[]{"text1","text2","text3"}, //Map側のkey 13 new int[]{android.R.id.text1,android.R.id.text2,R.id.text3} //layout側のTextViewId 表示させたいMapのkey順に合わせる 14 ); 15listView.setAdapter(adapter);

投稿2017/04/03 02:39

uniko

総合スコア448

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

uniko

2017/04/03 02:43

質問者さんはhttps://teratail.com/questions/71044で同じやり取りしてますよね。。 気をつけて下さいませお願いします。
edoooooo

2017/04/03 09:59

すみませんでした。 can not resolve symbol text3 と出るのですが、 new int[]{android.R.id.text1,android.R.id.text2,R.id.text3} のandroid.R.id.text3はどこに定義すればいいのでしょうか?  android.R.id.text1と2は、見つけることができませんでした。 どうぞよろしくお願いします。
uniko

2017/04/03 10:27

xmlを良くお読みください。 android.R.id.text3は定義していません。 また、android.R.id.text1,android.R.id.text2はAndroid側で標準に組み込まれているIDです。無駄にIDを追加しないように用意されているものを利用しているだけですのでtext3ともどもご自身で適宜変えてください。
edoooooo

2017/04/03 10:45

new int[]{android.R.id.text1,android.R.id.text2,R.id.eTxtData} このように <EditText android:id="@+id/eTxtData" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="15sp" android:hint="@string/hint_data" /> このようにID通りとしたところ、エラーが消えました。ありがとうございます。 次は、yonaさんにアドバイスを頂いてる通り、ArrayAdapterを使えるようにもしてみようと思います。
uniko

2017/04/03 10:50

EditTextを使うならArrayAdapterを継承するほうがいいですね。
edoooooo

2017/04/03 12:32

ありがとうございます。
guest

0

何度もArrayAdapterを使いましょう、と回答しているのになぜSimpleAdapterを使っているのでしょうか?

投稿2017/04/02 18:02

yona

総合スコア18155

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

edoooooo

2017/04/02 18:19

ArrayAdapterで動くコードが書けなくて、SimpleAdapterに直したところです。 やり直します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問