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

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

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

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

Android

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

Android Studio

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

解決済

android studio CSVファイルを読み込んでおき、特定の文字が入力されたら対応する文字を出力したい

sekaikan_ozaki
sekaikan_ozaki

総合スコア0

Java

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

Android

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

Android Studio

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

1回答

-1評価

0クリップ

37閲覧

投稿2019/05/21 02:34

編集2022/01/12 10:58

PCスペック
Windows7 64bit
メモリ 8GB
プロセッサ Intel Core i7-3610

Android Studio 3.4

android studioで

1.CSVファイルを読み込んでおく
2.ExitTextで文字を入力してbuttonをクリック
3.入力された文字がCSVファイルの中にあれば、「その文字」&「同じ行の違う列の対応する情報」をTextViewで出力

上のような機能を実装したいです。

2までは一応実装済みです。

写真はとりあえず、中身をすべて表示しているだけです。
イメージ説明

具体的には、
ほしい情報として画面右上の選択で「気温」を選択しているときに、「1時」と入力すると、「1時」&「21度」がTextViewで出力されるみたいな感じです。

現時点でのソースコードはかんな感じです。

java

package com.example.csvread3; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.EditText; import android.widget.ListView; import android.widget.Spinner; import android.widget.TextView; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.StringTokenizer; public class MainActivity extends AppCompatActivity { private ArrayList<String> timeList; private ArrayList<String> tempList; private ArrayList<String> amountList; private ArrayAdapter arrayAdapter; private ArrayAdapter arrayAdapter2; private ArrayAdapter arrayAdapter3; private TextView textView; private EditText editText; String text; String item; private String spinnerItems[] = {"選択", "気温", "電車"}; private TextView SpinnertextView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //フレームワーク作成 timeList = new ArrayList<String>(); tempList = new ArrayList<String>(); amountList = new ArrayList<String>(); //CSVを読み込んでおく readCSV(); //アプリに表示するためのインスタンスを作成 ListView listView = (ListView) findViewById(R.id.list_view1); ListView listView2 = (ListView) findViewById(R.id.list_view2); ListView listView3 = (ListView) findViewById(R.id.list_view3); //時刻の情報 arrayAdapter = new ArrayAdapter( this, R.layout.list_item_layout , timeList); //気温の情報 arrayAdapter2 = new ArrayAdapter( this, R.layout.list_item_layout , tempList); //電車の本数 arrayAdapter3 = new ArrayAdapter( this, R.layout.list_item_layout , amountList); //画面内に表示 listView.setAdapter(arrayAdapter); listView2.setAdapter(arrayAdapter2); listView3.setAdapter(arrayAdapter3); //文字を入力 editText = findViewById(R.id.edit_text); //入力した文字を表示する為の準備 textView = findViewById(R.id.text_view); //ボタンの作成 Button button = findViewById(R.id.button); //検索条件(気温or電車の本数)を選択 SpinnertextView = findViewById(R.id.sp_text_view); Spinner spinner = findViewById(R.id.spinner); // ArrayAdapter ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, spinnerItems); //ユーザーが選択しようとするときにドロップダウンによりリストを表示するのに使うレイアウトを指定 adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); // spinner に adapter をセット spinner.setAdapter(adapter); // リスナーを登録 spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { // アイテムが選択された時 @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { Spinner spinner = (Spinner)parent; item = (String)spinner.getSelectedItem(); SpinnertextView.setText(item); } // アイテムが選択されなかった public void onNothingSelected(AdapterView<?> parent) { // } }); //検索ボタンが押されたら button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // エディットテキストの文字を取得 text = editText.getText().toString(); //入力された時刻と適合する時刻を探すメソッド match(text); } }); } /** * CSVの読み込み */ public void readCSV() { try { InputStream inputStream = getResources().getAssets().open("data1.csv"); InputStreamReader inputStreamReader = new InputStreamReader(inputStream); BufferedReader bufferReader = new BufferedReader(inputStreamReader); String line = ""; while ((line = bufferReader.readLine()) != null) { StringTokenizer stringTokenizer = new StringTokenizer(line, ","); timeList.add(stringTokenizer.nextToken()); tempList.add(stringTokenizer.nextToken()); amountList.add(stringTokenizer.nextToken()); } bufferReader.close(); } catch (IOException e) { e.printStackTrace(); } } //入力された文字(時刻)と適合する時刻を探すメソッド public void match(String text){ //時刻の情報を1番目から最後まで回す for(String s : timeList){ //入力情報と一致したら if(text == s){ if(item == spinnerItems[1]){//スピナーで選択した条件が「気温」だったら textView.setText(text+"の"+spinnerItems[1]+"は○○です"); }else if(item == spinnerItems[2]){//条件が「電車の本数」だったら textView.setText(text+"の"+spinnerItems[2]+"は○○です"); } } } } }

現在のところ、edittextから受け取った文字をmatchメソッドにわたして、matchメソッドの中で、CSVファイルの時刻情報だけをfor文で回したときに、入力情報と一致すれば画面に、気温or電車の本数の情報をとりあえず表示させたいのですが、アルゴリズムがおかしいせいか「1時」と入力しても画面上に何も表示されません。。。

間違っている箇所がありましたら教えていただけませんでしょうか?

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

jimbe
jimbe

2019/05/21 06:43

> CSVの読み込み方すら分からない そちらからまず調査・実装しては如何でしょうか\.
sekaikan_ozaki
sekaikan_ozaki

2019/05/21 17:18

やってみましたが、 xmlファイルにてエラーが出てしまいまして、そちらに関して別に質問立てました
jimbe
jimbe

2019/05/22 12:00

大分進みましたですね\. >「気温」を選択しているときに、「1時」と入力すると とありますが, 画面にもコードにも気温を選択している様子はありません\. これは「とりあえず気温を選択していることにして」作られていると考えてよろしいでしょうか\.
sekaikan_ozaki
sekaikan_ozaki

2019/05/23 01:06

その部分についても実装してみました。 「気温」と「電車の本数」をアプリ画面右上で選べるようにしました。
sekaikan_ozaki
sekaikan_ozaki

2019/05/23 01:13

質問のコードとアプリ画面の修正しました
jimbe
jimbe

2019/05/23 01:38

すいません, 機能が足りないと言いたかったわけではありませんでした\. 説明とコードに差がありましたので, どちらが正しいのかということでした\. 今さらですが, 動作しない状態で機能を追加するのはお勧めできませんので\.\.\.
sekaikan_ozaki
sekaikan_ozaki

2019/05/23 01:58

確かにそうですよね。。 すみません、 以後気をつけます!

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Java

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

Android

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

Android Studio

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