0

当我拆分字符时,如何使用 spannable 或 ClickableSpan 来获取值?

这是一个代码

StringBuilder sb = new StringBuilder();
            String data = newFeedModel.getFeedTags();
            String[] items = data.split("#");
            for (String item : items)
            {
                if(item.trim().length() == 0){
                    sb.append("");
                }else{
                    sb.append("#"+item+"\n");
                }
            }

            holder.tags.setText(sb.toString());

我将拆分所有“#”字符,例如 facebook 函数。

#aaa#bbbccc#xcvsdfsefsefa#22

它会像这样分裂

#aaa
#bbbccc
#xcvsdfsefsefa
#22

但是如何知道我什么时候拆分 char 然后可以得到正确的 gata?

更新:

public void onBindViewHolder(ViewHolder holder, int position) {
if(!TextUtils.isEmpty(newFeedModel.getFeedTags())){
            holder.tags.setVisibility(View.VISIBLE);
            String data = newFeedModel.getFeedTags();
            holder.bind(data);
        }
}

在 MyClickableSpan

class MyClickableSpan extends ClickableSpan {

    String clicked;
    Context context;

    public MyClickableSpan(Context context, String string) {

        super();
        this.context = context;
        clicked = string;
    }

    public void onClick(View tv) {
        Toast.makeText(context.getApplicationContext(), ""+clicked, Toast.LENGTH_LONG).show();

    }

    @Override
    public void updateDrawState(TextPaint ds) {
        ds.setUnderlineText(false); // set to false to remove underline
    }

}

当用户单击标签时,如何将数据发送到实时搜索。

这是我的实时代码

public void fetchSearch(String key)
    {
        apiInterface = ApiClient.getApiClient().create(ApiInterface.class);
        Call<List<SearchModel>> call = apiInterface.getSearch(key);

        call.enqueue(new Callback<List<SearchModel>>() {
            @Override
            public void onResponse(Call<List<SearchModel>> call, retrofit2.Response<List<SearchModel>> response) {
                searchModelList = response.body();
                adapter = new NewSearchAdapter(getActivity(), searchModelList);
                recyclerView.setAdapter(adapter);
                adapter.notifyDataSetChanged();
            }

            @Override
            public void onFailure(Call<List<SearchModel>> call, Throwable t) {

            }
        });
    }

    @Override
    public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) {
        inflater.inflate(R.menu.search, menu);

        SearchManager searchManager = (SearchManager) getActivity().getSystemService(Context.SEARCH_SERVICE);
        final SearchView searchView = (SearchView) menu.findItem(R.id.search).getActionView();

        searchView.setSearchableInfo(searchManager.getSearchableInfo(getActivity().getComponentName()));

        searchView.setIconifiedByDefault(false);
        searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
            @Override
            public boolean onQueryTextSubmit(String query) {
                fetchSearch(query);
                return false;
            }

            @Override
            public boolean onQueryTextChange(String newText) {
                fetchSearch(newText);
                return false;
            }
        });

        super.onCreateOptionsMenu(menu, inflater);
    }

@Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();
        switch (item.getItemId()) {
            case R.id.message:
                Intent intent = new Intent(getContext(), NotificationMessageActivity.class);
                startActivity(intent);
                return true;
        }

        return super.onOptionsItemSelected(item);
    }
4

0 回答 0