Выделите термин поиска в текстовом действии, поиск в котором выполняется через EditText в действии поиска. - PullRequest
0 голосов
/ 17 июня 2020

Я хочу выделить слово, которое ищется через EditText в Search Activity и которое появится в TextView Text Activity (это отдельное действие). Данные textView поступают из базы данных Sqlite, и я использую список для представления результатов. Я хочу, чтобы, если пользователь нажимает на результат поиска, искомое слово должно быть окрашено в статье.

Действия поиска:

public class Search extends ListActivity {

private database db;
private String[] Name;
private String[] season;
private EditText etxtSearch;
private RadioButton rbName;
private RadioButton rbText;
private TextView txtStatus;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.search);

    db=new database(this);
    txtText = (TextView) findViewById(R.id.text_txt_text);

    etxtSearch = (EditText) findViewById(R.id.search_edit_search);
    rbName = (RadioButton) findViewById(R.id.search_rb_text);
    rbText = (RadioButton) findViewById(R.id.search_rb_name);
    txtStatus = (TextView) findViewById(R.id.search_txt_status);

    refresh(etxtSearch.getText().toString(), "Text");

    etxtSearch.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {


            if(rbName.isChecked()){
                refresh(etxtSearch.getText().toString(), "Name");

            }
            if (rbText.isChecked()) {
                refresh(etxtSearch.getText().toString(), "Text");

            }
        }

        @Override
        public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
                                      int arg3) {

        }

        @Override
        public void afterTextChanged(Editable arg0) {

        }
    });

}

@Override
protected void onListItemClick(ListView l, View v, int position, long id) {

    Intent i=new Intent(Search.this,Text.class);
    i.putExtra("sea", season[position]);
    i.putExtra("name",Name[position]);
    Search.this.startActivity(i);
}

class AA extends ArrayAdapter<String>{
    public AA(){
        super(Search.this,R.layout.row_search,Name);
    }

    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {

        LayoutInflater in=getLayoutInflater();
        View row=in.inflate(R.layout.row_search, parent,false);

        TextView name=(TextView) row.findViewById(R.id.row_search_txt_name);

        name.setText(season[position]+": "+Name[position]);
        name.setTypeface(Main.font);
        return (row);
    }
}
private void refresh(String text1, String field){
    db.open();

    int s = db.Search_count(text1, field);
    if (etxtSearch.getText().toString().equals("")) {
        s = 0;
        txtStatus.setText("کلمه ای را برای جستجو وارد کنید");
    }else {
        txtStatus.setText(" تعداد "+s+"یافت شد");

    }
    Name=new String[s];
    season=new String[s];
    for(int i=0;i<s;i++){
        Name[i]=db.Search_display(i, 1, text1, field);
        season[i]=db.Search_display(i, 3, text1, field);
    }
    setListAdapter(new AA());
    db.close();

}

}

Текст Активность:

public class Text extends Activity  {

private TextView txtName;
private TextView txtText;
private database db;
private String season;
private String name;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.text);

    db = new database(this);
    txtName = (TextView) findViewById(R.id.text_txt_name);
    txtText = (TextView) findViewById(R.id.text_txt_text);

    Bundle ex=getIntent().getExtras();

    season = ex.getString("sea");
    name = ex.getString("name");

    load(season, name);
}
private void load(String sea, String Name)
{
    db.open();
    txtName.setText(Name);
    txtText.setText(db.Text_display("content", sea, Name));
    db.Text_display("content", sea, Name);
    db.close();
}
 }
...