AndroidのTextViewでgetChars()メソッドを使う方法【サンプルコード付き】
はじめに
このチュートリアルでは、Androidアプリ開発におけるgetChars()メソッドの使い方を解説します。getChars()はStringクラスのメソッドの一つで、文字列の中から指定した範囲の文字を取り出し、char型の配列へコピーすることができます。ここでは、EditTextに入力された文字列の一部を取得し、TextViewに表示する簡単なサンプルアプリを作成します。
手順1:新規プロジェクトを作成する
Android Studioを起動し、メニューから「File」→「New Project」を選択します。必要な項目をすべて入力して、新しいプロジェクトを作成してください。
手順2:レイアウトファイルを編集する
res/layout/activity_main.xml に以下のコードを追加します。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:app="https://schemas.android.com/apk/res-auto"
xmlns:tools="https://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center"
tools:context=".MainActivity">
<EditText
android:id="@+id/name"
android:layout_width="match_parent"
android:hint="Enter name"
android:layout_height="wrap_content" />
<Button
android:id="@+id/click"
android:text="Click"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/textview"
android:layout_width="wrap_content"
android:textSize="25sp"
android:layout_height="wrap_content" />
</LinearLayout>
このレイアウトには、名前を入力するためのEditText、処理を実行するButton、結果を表示するTextViewが縦方向に配置されています。ボタンがタップされると、EditTextに入力された文字列を取得し、指定位置以降の文字を抽出してTextViewに表示します。
手順3:MainActivity.javaを編集する
src/MainActivity.java に以下のコードを追加します。
package com.example.myapplication;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
EditText name;
Button button;
TextView text;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
name = findViewById(R.id.name);
button = findViewById(R.id.click);
text = findViewById(R.id.textview);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!name.getText().toString().isEmpty()) {
if (name.getText().toString().length() >= 0) {
char[] ch = new char[10];
name.getText().toString().getChars(9, name.getText().length(), ch, 0);
text.setText(String.valueOf(ch));
}
} else {
name.setError("Plz enter name");
}
}
});
}
}
ボタンがクリックされると、まずEditTextが空でないかを判定します。空でない場合は、getChars()の第1引数に開始位置「9」、第2引数に文字列の末尾を指定して文字を抽出し、char配列にコピーした結果をTextViewにセットしています。
注意点
サンプルコードではchar配列のサイズを10、開始位置を固定値の「9」としています。そのため、入力された文字列の長さが10文字未満の場合、StringIndexOutOfBoundsExceptionが発生する点に注意してください。実際のアプリでは、文字列の長さが10以上であることを事前にチェックするか、開始位置を文字列の長さに応じて動的に設定することをおすすめします。
アプリを実行する
それでは、アプリケーションを実行してみましょう。実行前に、Android端末をパソコンに接続しておいてください。Android Studioでプロジェクト内のアクティビティファイルを開き、ツールバーの「Run」アイコンをクリックします。デバイスの選択画面で自分のモバイル端末を選ぶと、端末にアプリの初期画面が表示されます。

実行結果の確認
上記の実行結果では、文字列として「tutorialspoint」と入力しています。ボタンをタップすると「point」が表示されます。これは、getChars()によって文字列のインデックス9(先頭の文字を0番目として数えた場合の10文字目)から末尾までの部分、つまり「point」が切り出されてchar配列にコピーされるためです。
まとめ
getChars()を使うことで、文字列から任意の範囲の文字を簡単に配列として取り出すことができます。substring()との違いは、戻り値として新しいStringオブジェクトを生成せず、既存のchar配列に直接コピーできる点です。文字列操作のパフォーマンスが求められる場面でぜひ活用してみてください。
-
【Android開発】StringBufferの使い方を徹底解説!文字列操作の基本メソッドまとめ
はじめに:StringBufferとは?具体的なサンプルコードに入る前に、まず「StringBuffer(ストリングバッファ)」について簡単に確認しておきましょう。StringBufferクラスは、変更可能(ミュータブル)な文字列を扱うためのクラスです。JavaではStringオブジェクトは不変(イミュータブル)であるため、文字列を頻繁に連結・編集する場合には、新しいオブジェクトが都度生成されてパフォーマンスが低下します。一方、StringBufferは既存の文字列を直接書き換えられるため効率的で、さらにスレッドセーフである点も大きな特徴です。マルチスレッド環境でも安全に文字列操作が行えます。
-
【Android】ButterKnifeの使い方をサンプルコード付きで徹底解説!
この記事では、Androidアプリ開発で定番だったアノテーションライブラリ「ButterKnife」の使い方を、実際にサンプルプロジェクトを動かしながらステップごとに解説します。 ButterKnifeとは? ButterKnifeは、Jake Wharton氏が開発したAndroid向けのビューインジェクションライブラリです。従来のようにfindViewById()でビューを1つずつ取得する代わりに、@BindViewアノテーションをフィールドに付けるだけで、対応するビューが自動的に注入されます。ボイラープレートコードが減り、Activityのコードがすっきりと読みやすくなるのが大きなメリ