0

Я создаю поисковую систему для своего приложения для Android, которое включает в себя базу данных. Моя текущая реализация выглядит следующим образом:AutoCompleteTextView: Как изменить 2 строки в макете

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.result_item, R.id.txtVerbName, verbs); 
AutoCompleteTextView txtSearch = (AutoCompleteTextView) findViewById(R.id.txtSearch); 
txtSearch.setAdapter(adapter); 

Однако, вы заметите, что я поставил «txtVerbName» (который является TextView) как TextView, который получает значение изменилось с массивом присоединенной («глаголы»). Как я могу сделать эту работу так, чтобы я мог прикрепить значение к txtVerbName, а затем добавить другое значение в другое текстовое представление в том же макете?

+0

Вы будете необходимо реализовать свой собственный расширение 'ArrayAdapter'. Таким образом, вы точно контролируете, какие данные вы связываете с какими видами. Есть буквально множество примеров, которые можно найти здесь, в SO и вашей любимой поисковой системе. –

+0

@MH. Мне жаль, что я опубликовал этот вопрос, но когда я нашел эти примеры (до публикации этого вопроса), они меня смутили, и я не совсем понял их. Я потратил время на то, чтобы прочитать, что на самом деле происходит, и реализовал свой собственный автозаполнение пакета и выполнил все, что хотел. – Qasim

ответ

0

Использование пользовательского адаптера для достижения этой цели:

public class AutoCompleteCursorAdapter extends CursorAdapter implements Filterable { 

private TextView txtVerbName, txtVerbDefinition; 
private Cursor mCursor; 
private Context mContext; 
private final LayoutInflater mInflater; 

public AutoCompleteCursorAdapter(Context context, Cursor c) { 
    super(context, c, true); 
    mInflater = LayoutInflater.from(context); 
    mContext = context; 
} 

@Override 
public void bindView(View view, Context context, Cursor cursor) { 
    TextView txtVerbName = (TextView) view.findViewById(R.id.txtVerbName); 
    TextView txtVerbDefinition = (TextView) view.findViewById(R.id.txtVerbDefinition); 

    txtVerbName.setText(cursor.getString(1)); 
    txtVerbDefinition.setText(cursor.getString(2)); 
} 

@Override 
public View newView(Context context, Cursor cursor, ViewGroup parent) { 
    final View view = mInflater.inflate(R.layout.result_item, parent, false); 
    return view; 
} 

@Override 
public Cursor runQueryOnBackgroundThread(CharSequence constraint) { 
    // this is how you query for suggestions 
    if (getFilterQueryProvider() != null) { 
     return getFilterQueryProvider().runQuery(constraint); 
    } 
    if (constraint != null) { 

     DBAdapter db = new DBAdapter(mContext); 
     db.open(); 

     mCursor = db.getVerbsContaining(constraint); 

     mCursor.moveToFirst(); 
     db.close(); 
    } 
    return mCursor; 
} 

}