Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java AutoCompleteTextView:如何更改布局中的2个字符串_Java_Android_Textview_Android Arrayadapter_Autocompletetextview - Fatal编程技术网

Java AutoCompleteTextView:如何更改布局中的2个字符串

Java AutoCompleteTextView:如何更改布局中的2个字符串,java,android,textview,android-arrayadapter,autocompletetextview,Java,Android,Textview,Android Arrayadapter,Autocompletetextview,我正在为我的Android应用程序制作一个包含数据库的搜索引擎。我目前的执行情况如下: ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.result_item, R.id.txtVerbName, verbs); AutoCompleteTextView txtSearch = (AutoCompleteTextView) findViewById(R.id.txtSearch)

我正在为我的Android应用程序制作一个包含数据库的搜索引擎。我目前的执行情况如下:

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);
ArrayAdapter adapter=new ArrayAdapter(this,R.layout.result_项,R.id.txtwerbName,动词);
AutoCompleteTextView txtSearch=(AutoCompleteTextView)findViewById(R.id.txtSearch);
setAdapter(适配器);

但是,您会注意到我将“txtwerbName”(这是一个TextView)作为TextView,该TextView使用附加的数组(“动词”)更改其值。如何实现这一点,以便我可以将值附加到txtwerbName,然后还可以将不同的值附加到同一布局中的另一个textview?

使用自定义适配器来实现这一点:

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;
}

}

您需要实现自己的
ArrayAdapter扩展。这样,您就可以精确地控制与哪些视图绑定的数据。这里有大量的例子可以在SO和你最喜欢的搜索引擎上找到。@MH。我很抱歉发布这个问题,但是当我发现这些例子(在发布这个问题之前)时,它们让我很困惑,我不太理解它们。我花时间仔细阅读了实际发生的事情,实现了我自己的自定义AutoCompleteAdapter,并成功地实现了我想要的。