Membagi String Pada Java Android dengan Guava Library


Seperti kasus sebelumnya, kasus ini muncul ketika saya sedang membuat aplikasi SMS Enkripsi. Pada SMS Enkripsi yang saya buat, ada penanganan khusus ketika hasil isi SMS tersebut melebihi 160 karakter, karena 1 SMS itu maksimal 160 karakter. Jadi penangannya, ketika SMS yang dimasukkan melebihi 160 karakter, aplikasi akan secara otomatis mengirimnya lebih dari 1 SMS. Penanganan tersebut saya menggunakan Splitter pada Guava Library.

Untuk itu saya share contoh aplikasi yang bisa membagi String menjadi beberapa bagian berdasarkan jumlah string yang akan dibagi.

activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/form"
        android:layout_alignParentTop="true"
        android:text="@string/intro" />

    <EditText
        android:id="@+id/form"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/textView1"
        android:layout_marginTop="19dp"
        android:ems="10"
        android:hint="@string/textHint" />

    <Button
        android:id="@+id/tombol"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/form"
        android:text="@string/tombol" />

    <EditText
        android:id="@+id/hasil"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_alignRight="@+id/form"
        android:layout_below="@+id/tombol"
        android:ems="10"
        android:enabled="false"
        android:inputType="textMultiLine" >

        <requestFocus />
    </EditText>

</RelativeLayout>

MainActivity.java

package com.herupurwito.contohbagistring;

import com.google.common.base.Splitter;

import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.app.Activity;

public class MainActivity extends Activity {
	Button TombolCek;
	EditText FormString, TampilHasil;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		TombolCek = (Button) findViewById(R.id.tombol);
		FormString = (EditText) findViewById(R.id.form);
		TampilHasil = (EditText) findViewById(R.id.hasil);
		TombolCek.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				String Kalimat = FormString.getText().toString();
				int Pembagi = 3;
				String Hasilnya = "";
				for (final String HasilBagi : Splitter.fixedLength(Pembagi)
						.split(Kalimat)) {
					Hasilnya += "#"+HasilBagi;
				}
				TampilHasil.setText(Hasilnya);

			}

		});
	}

}

strings.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="app_name">ContohBagiString</string>
    <string name="action_settings">Settings</string>
    <string name="hello_world">Hello world!</string>
    <string name="intro">Contoh Aplikasi Bagi String</string>
    <string name="tombol">Cek Hasil</string>
    <string name="textHint">Masukkan String</string>

</resources>

Screenshot

hasilBagiString

hasilBagiString

Source Code
Dropbox
Demok APK
Github

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s