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

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

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Android

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

Xamarin

Xamarin(ザマリン)は、iPhoneなどのiOSやAndroidで動作し、C# 言語を用いてアプリを開発できるクロスプラットフォーム開発環境です。Xamarin Studioと C# 言語を用いて、 iOS と Android の両方の開発を行うことができます。

Q&A

解決済

1回答

1300閲覧

Xamarin.Android listViewの表示名称と別の情報を裏に持つ方法について

Wish_N

総合スコア35

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Android

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

Xamarin

Xamarin(ザマリン)は、iPhoneなどのiOSやAndroidで動作し、C# 言語を用いてアプリを開発できるクロスプラットフォーム開発環境です。Xamarin Studioと C# 言語を用いて、 iOS と Android の両方の開発を行うことができます。

0グッド

0クリップ

投稿2020/08/10 16:43

Xamarin.Androidにて開発を行っています。

listViewに項目をバインドする際に、
画面上に表示している項目と押下した際の項目の内容を別に持ちたいと考えています。

イメージとしては下記のような形を想定しています。

[画面上の表示]
りんご
バナナ
みかん

[クリック時の表示]
"りんご"が押された場合は"apple"を表示
"バナナ"が押された場合は"banana"を表示
"みかん"が押された場合は"orange"を表示

現在は実装方法がわからないため、下記のような記載で実装しています

c#

1 2List<string> japList = new List<string>{"りんご","バナナ","みかん"}; 3List<string> engList = new List<string>{"apple","banana","orange"}; 4 5List<string> viewStateItemList = new List<string>(); 6 7for(int i = 0;i < japList.counte ; i++) 8{ 9  // ここの処理を解決したい 10 viewStateItemList.add(japList + ";" + engList); 11} 12 13ArrayAdapter<string> arrayAdapter = new ArrayAdapter<string>(this, Resource.Layout.default, viewStateItemList); 14 15listView.SetAdapter(arrayAdapter); 16 17listView.ItemClick += (s, a) => 18{ 19 var parent = (ListView)a.Parent; 20 21 string linkeng = (string)parent.GetItemAtPosition(a.Position); 22 linkeng= linkeng.Split(";")[1]; 23 24 Toast.MakeText(this, linkeng, ToastLength.Short).Show(); 25}; 26

この実装だと画面上の表示が
[画面上の表示]
りんご;apple
バナナ;banana
みかん;orange

となってしまい、想定の表示と相違します。

ドロップダウンリストのように、ItemとValueという考え方で実装できれば解決できるとは思うのですが、
調べてもよくわかりませんでした。

不足事項等あれば追記します。
どうか、回答お願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

いくつか方法が考えられますが、adapterでクラスを設定するというのはどうでしょうか?クラスにすると、ToStringメソッドの戻り値が表示されることになります。

例えば、このようなクラスです。

c#

1public class Fruit : Java.Lang.Object 2{ 3 public string Japanese { get; set; } 4 public string English { get; set; } 5 6 public override string ToString() 7 { 8 return Japanese; 9 } 10}

c#

1List<string> japList = new List<string> { "りんご", "バナナ", "みかん" }; 2List<string> engList = new List<string> { "apple", "banana", "orange" }; 3 4List<Fruit> viewStateItemList = new List<Fruit>(); 5 6for (int i = 0; i < japList.Count; i++) 7{ 8 // ここの処理を解決したい 9 viewStateItemList.Add(new Fruit 10 { 11 Japanese = japList[i], 12 English = engList[i] 13 }); 14} 15 16ArrayAdapter<Fruit> arrayAdapter = new ArrayAdapter<Fruit>(this, Resource.Layout.default, viewStateItemList); 17 18listView.Adapter = arrayAdapter; 19 20listView.ItemClick += (s, a) => 21{ 22 var parent = (ListView)a.Parent; 23 24 Fruit linkeng = (Fruit)parent.GetItemAtPosition(a.Position); 25 26 Toast.MakeText(this, linkeng.English, ToastLength.Short).Show(); 27};

投稿2020/08/10 19:11

f-miyu

総合スコア1625

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

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

Wish_N

2020/08/11 02:41

回答いただきありがとうございます。 無事、お答えいただいた内容で解決いたしました。 1点質問があるのですが、クラスの作成時に": Java.Lang.Object"を継承しているのは、 "Fruit linkeng = (Fruit)parent.GetItemAtPosition(a.Position);"の変換のため、という認識で会っていますでしょうか。
f-miyu

2020/08/11 06:22

その認識であってます。継承しないと、Java.Lang.Objectにラップされた形で返ってくるのですが、元のクラスにアクセスするのにリフレクションが必要になってしまいます。
Wish_N

2020/08/11 15:53

回答ありがとうございます。 大変わかりやすかったので助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問