我有一個令牌列表,用戶需要快速創建這些列表的子集。我現在有鍵盤輸入和列表顯示,但鍵盤覆蓋了列表。我的用戶想點擊這些令牌而不是輸入它們。可能有500個令牌,所以listview似乎不可行。從一個角色到20個角色可以有不同的長度,所以gridview看起來不是一個好主意。我所能想到的只是在textview中保留列表,並讓用戶點擊一個,然後彈出一個提示,詢問他是否要輸入該令牌。該列表是可滾動的。如何找到在textview上點擊哪個單詞Android
基本上,我希望用戶在textview中單擊一個單詞,讓java知道那是什麼單詞。所有單詞用逗號分隔。
例如,這裏是一組可能顯示
7W,4F,2R,5K,73,3J,6F,2F,7M,21,5D,1H,5C,24,7Y,4D ,70,1E,3P,2C,4B,3E,5A,4G,5E,6H,6N,7J,7S,2B,41,4H,3H,2A,3B,3F,40,4N,2J,3C,22 5M,44,7Z,3U,3L,3Q,7A,72,4V,7X,26,1D,4M,6D,5R,6B,6K,7U,7V,7T,7P,7L,4R,7G,7E 7B,3X,7F,5J,5L,3T,7R,3K,2T,43,71,5N,1C,7H,5B,3M,6J,6M,6R,5H,1F,1L,7Q,6P,7C ,6A,4T,3R,46,1N,1K,4Y,5F,7K,6S,5Q,2H,42,4X,1A,1B,33,3N,2K,3G,4A,5G,30,4E,7N ,4S,3S,5S,3D,20,4K,1J,32,2X,31,4Q,45,4Z,1G,74,6G,4C,4U,3Z,4W,5P,25,1M,6C,3V ,3Y,3A,6E,4P,7D,4J,4L,3W,6L,6Q,荊棘,北刺,鉤子,黑傑克,Castle Point,Calshot Spit,Bourne Gap,
用戶需要能夠在30秒內選擇所需的10個項目(他在比賽開始前幾分鐘就可以獲得列表)。
,他需要輸入的文本輸入可能是這樣的:
路由名稱,30,24,4R,3E,6Q,3N,索恩諾爾,5G
什麼是最好的方式做這個?
這裏是我現在
他想要的是隻要按一下標記。
這裏是一些文本代碼來證明這個概念。感謝Vaghela M.R - Mobile Devloper的鏈接。
public class MainActivity extends Activity {
String waypoint = "";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
}
private void init() {
String definition = "1A, 1B, 1C, 1D, 1E, 1F, 1G, 1H, 1J, 1K, 1L, 1M, 1N, 20, 21, 22, 24, 25, 26, 2A, 2B, 2C, 2F, 2H, 2J, 2K, 2R, 2T, 2X, 30, 31, 32, 33, 3A, 3B, 3C, 3D, 3E, 3F, 3G, 3H, 3J, 3K, 3L, 3M, 3N, 3P, 3Q, 3R, 3S, 3T, 3U, 3V, 3W, 3X, 3Y, 3Z, 40, 41, 42, 43, 44, 45, 46, 4A, 4B, 4C, 4D, 4E, 4F, 4G, 4H, 4J, 4K, 4L, 4M, 4N, 4P, 4Q, 4R, 4S, 4T, 4U, 4V, 4W, 4X, 4Y, 4Z, 5A, 5B, 5C, 5D, 5E, 5F, 5G, 5H, 5J, 5K, 5L, 5M, 5N, 5P, 5Q, 5R, 5S, 6A, 6B, 6C, 6D, 6E, 6F, 6G, 6H, 6J, 6K, 6L, 6M, 6N, 6P, 6Q, 6R, 6S, 70, 71, 72, 73, 74, 7A, 7B, 7C, 7D, 7E, 7F, 7G, 7H, 7J, 7K, 7L, 7M, 7N, 7P, 7Q, 7R, 7S, 7T, 7U, 7V, 7W, 7X, 7Y, 7Z, Black_Jack, Bourne_Gap, Calshot_Spit, Castle_Point, Hook, North_Thorn, Thorn_Knoll".trim();
TextView definitionView = (TextView) findViewById(R.id.text);
definitionView.setMovementMethod(LinkMovementMethod.getInstance());
definitionView.setText(definition, BufferType.SPANNABLE);
Spannable spans = (Spannable) definitionView.getText();
BreakIterator iterator = BreakIterator.getWordInstance(Locale.US);
iterator.setText(definition);
int start = iterator.first();
for (int end = iterator.next(); end != BreakIterator.DONE; start = end, end = iterator
.next()) {
String possibleWord = definition.substring(start, end);
if (Character.isLetterOrDigit(possibleWord.charAt(0)))
{
ClickableSpan clickSpan = getClickableSpan(possibleWord);
spans.setSpan(clickSpan, start, end,
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}
}
}
private ClickableSpan getClickableSpan(final String word) {
return new ClickableSpan() {
final String mWord;
{
mWord = word;
}
@Override
public void onClick(View widget) {
TextView textView1 = (TextView) findViewById(R.id.textView1);
Log.d("tapped on:", mWord);
Toast.makeText(widget.getContext(), mWord, Toast.LENGTH_SHORT)
.show();
checkWord(mWord);
}
public void updateDrawState(TextPaint ds) {
super.updateDrawState(ds);
}
};
}
public void doSomething(){
TextView textView1 = (TextView) findViewById(R.id.textView1);
StringBuilder sb = new StringBuilder();
sb.append(textView1.getText());
sb.append(", ").append(waypoint);
textView1.setText(sb);
}
public void checkWord(String word) {
waypoint = word;
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("Enter "+ word + "?")
.setCancelable(false)
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// fire an intent go to your next activity
doSomething();
}
})
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
AlertDialog alert = builder.create();
alert.show();
}
}
[確定哪個單詞在android textview中被點擊]的可能的重複(http://stackoverflow.com/questions/11601139/determining-which-word-is-clicked-in-an-android-textview) –
我在發佈之前已經看到該線程。它看起來像該方法不適用於非編輯textView,因爲此列表不能編輯。該文件說「這通常爲非EditText TextViews爲null」因爲我在android級別11上工作,也扔了我。這種方法會起作用嗎? –
參考此鏈接如果幫助完全給你 http://stackoverflow.com/questions/8612652/select-a-word-on-a-tap-in-textview-edittext – LeoMobDev