6

Tôi có yêu cầu để triển khai văn bản chỉnh sửa mà người dùng có thể nhập vào bất kỳ điều gì, nhưng khi họ nhập từ mới bắt đầu bằng '@', tính năng tự động hoàn tất sẽ bắt đầu hiển thị người dùng tiềm năng.Android AutoCompleteTextView với '@' đề cập đến việc lọc như twitter và facebook

Tôi hiểu cách sử dụng chức năng AutoCompleteTextView để lọc. Nhưng tôi không chắc chắn làm thế nào để đi về chụp các ký tự từ từ cuối cùng sau khi biểu tượng '@' (bỏ qua bất kỳ từ nào trước đó).

Do đó khi người dùng đã được chọn từ danh sách AutoCompleteTextView, nó sẽ thay thế từ bằng '@', ví dụ:


"Đây là một thông điệp cho @steve"


khi người dùng nhấp vào "Steve" từ danh sách, các văn bản cần thay thế để:


"Đây là thông báo cho Steve"


Tôi cũng cần lấy chuỗi dưới dạng mà tôi có thể gửi tới máy chủ. ví dụ: từ ví dụ trên, chúng tôi sẽ cần phải gửi ra khỏi chuỗi:


"Đây là một thông điệp cho [your username: [email protected], id: 44]."


Tôi đã nhìn https://github.com/splitwise/TokenAutoComplete

Mà dường như tuyệt vời cho gõ email trong một danh sách, nhưng tôi không chắc chắn làm thế nào để phục vụ cho nhu cầu của tôi. Trần trong tâm trí, tôi cần phải hỗ trợ nhiều/trùng lặp đề cập:.

ví dụ


"Đây là một thông điệp cho SteveBob đây là câu thứ hai trong thông điệp cho Bob "


Nếu có ai biết hoặc đã làm bất cứ điều gì như thế này, sẽ r eally đánh giá cao nó!

Trả lời

4

Tôi đã kết thúc bằng cách sử dụng thư viện spyglass từ linkedin mà không chính xác những gì tôi đang tìm kiếm. Nó cung cấp một MentionsEditText (có thể được tùy chỉnh). Tôi cũng đã sử dụng một ListPopupWindow để hiển thị các đề xuất trong một danh sách (như một AutoCompleteTextView).

Dưới đây là liên kết ...

https://github.com/linkedin/Spyglass

+0

làm thế nào bạn có được một chuỗi với định dạng này? : "Đây là thông báo cho [tên người dùng: [email protected], id: 44]". –

+1

@ FlashAsh99 Bạn có thể vui lòng cho biết cách bạn đã thay thế văn bản sau khi sử dụng Spyglass – bala

+0

@ FlashAsh99 Tôi cũng muốn biết cách bạn thay thế văn bản bằng spyglass – guerrero

3

Các phương pháp sau đây sẽ trích xuất từ ​​bắt đầu bằng "@":

private void parseText(String text) { 
    String[] words = text.split("[ \\.]"); 
    for (int i = 0; i < words.length; i++) { 
     if (words[i].length() > 0 
       && words[i].charAt(0) == '@') { 
      System.out.println(words[i]); 
     } 
    } 
} 

Một khi bạn có các từ, sử dụng bộ lọc hoàn toàn tự động của bạn và cuối cùng là thay thế văn bản sử dụng string.Replace.

Các vấn đề liên quan