Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/189.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 如何在ListView的每个项目中都有一个AutoCompleteTextView_Java_Android_Xml_Listview_Autocompletetextview - Fatal编程技术网

Java 如何在ListView的每个项目中都有一个AutoCompleteTextView

Java 如何在ListView的每个项目中都有一个AutoCompleteTextView,java,android,xml,listview,autocompletetextview,Java,Android,Xml,Listview,Autocompletetextview,我已经试着做了一段时间,但似乎做不到。我将适配器应用于对象,但当我在视图中输入字符时,仍然没有显示任何内容 public View getView(int position, View view, ViewGroup parent) { ViewHolder holder; if (view == null) { holder = new ViewHolder(); view = mInflater.inflate(R.layout.list_i

我已经试着做了一段时间,但似乎做不到。我将适配器应用于对象,但当我在视图中输入字符时,仍然没有显示任何内容

public View getView(int position, View view, ViewGroup parent) {
    ViewHolder holder;
    if (view == null) {
        holder = new ViewHolder();

        view = mInflater.inflate(R.layout.list_item, parent, false);

        holder.nameTxt = (AutoCompleteTextView) view.findViewById(R.id.name_txt);

        String[] drinkArray = activity.getResources().getStringArray(R.array.drink_array);
        holder.adapter = new ArrayAdapter<>(activity, android.R.layout.simple_list_item_1, drinkArray);
        holder.nameTxt.setAdapter(holder.adapter);

        view.setTag(holder);
    } else {
        holder = (ViewHolder) view.getTag();
    }

    if (!itemExists(position)) return view;

    ListItem item = getItem(position);
    holder.nameTxt.setText(item.name);

    holder.nameTxt.setAdapter(holder.adapter);

    holder.nameTxt.setTag(position);

    holder.nameTxt.setOnFocusChangeListener(this);

    return view;
}

@Override
public void onFocusChange(View v, boolean hasFocus) {
    if (hasFocus) return;
    int position;
    ListItem item;
    switch (v.getId()) {
        case R.id.name_txt:
            position = (int) v.getTag();
            if (!itemExists(position)) return;
            item = getItem(position);
            AutoCompleteTextView txtView = (AutoCompleteTextView) v;
            item.name = txtView.getText().toString();
            break;
        default:
            Log.e(TAG, "Unknown onFocusChange View ID: " + v.getId());
            break;
    }
}

public class ViewHolder {
    public AutoCompleteTextView nameTxt;
    public ArrayAdapter<String> adapter;
}

public class ListItem {
    public String name;

    public ListItem() {
        name = "";
    }
}
public View getView(int位置、视图视图、视图组父视图){
视窗座;
如果(视图==null){
holder=新的ViewHolder();
view=mInflater.充气(R.layout.list\u项,父项,false);
holder.nameTxt=(AutoCompleteTextView)view.findviewbyd(R.id.name\u-txt);
String[]drinkArray=activity.getResources().getStringArray(R.array.drink\u数组);
holder.adapter=new ArrayAdapter(活动,android.R.layout.simple\u列表\u项目,drinkArray);
holder.nameTxt.setAdapter(holder.adapter);
视图.设置标签(支架);
}否则{
holder=(ViewHolder)view.getTag();
}
如果(!itemExists(position))返回视图;
ListItem=getItem(位置);
holder.nameTxt.setText(item.name);
holder.nameTxt.setAdapter(holder.adapter);
holder.nameTxt.setTag(位置);
holder.nameTxt.setOnFocusChangeListener(此);
返回视图;
}
@凌驾
public void onFocusChange(视图v,布尔hasFocus){
如果(hasFocus)返回;
内部位置;
清单项目;
开关(v.getId()){
案例R.id.name_txt:
位置=(int)v.getTag();
如果(!itemExists(position))返回;
item=getItem(位置);
AutoCompleteTextView txtView=(AutoCompleteTextView)v;
item.name=txtView.getText().toString();
打破
违约:
Log.e(标记“未知onFocusChange视图ID:+v.getId());
打破
}
}
公共类视图持有者{
公共自动完成文本视图名称TXT;
公共阵列适配器;
}
公共类列表项{
公共字符串名称;
公共列表项(){
name=“”;
}
}

好的,上面的代码就是我到目前为止的代码,它可以完美地保存和加载文本视图中的数据。

我认为您的方法getView else中有一个错误。你可以试试下面的方法 改变

那么这种类型的其他

ViewHolder item = (ViewHolder) holder.getTag();
...

我认为您的方法getView else中有一个错误。你可以试试下面的方法 改变

那么这种类型的其他

ViewHolder item = (ViewHolder) holder.getTag();
...

我找到了完成这项任务的方法。我在ListView(ListView1)中放置了一个普通的文本视图,然后在ListView1的顶部创建了另一个ListView(ListView2)。然后,根据用户在ListView1中单击的项目,我将项目编号(位置)和用户单击的TextViewer中的文本传递到ListView2,在那里它可以设置自己的上边距并过滤结果。设置上边距会将其移动到用户单击的文本视图下。如果有人想要代码,请留言,我会更新答案。

我找到了完成这项任务的方法。我在ListView(ListView1)中放置了一个普通的文本视图,然后在ListView1的顶部创建了另一个ListView(ListView2)。然后,根据用户在ListView1中单击的项目,我将项目编号(位置)和用户单击的TextViewer中的文本传递到ListView2,在那里它可以设置自己的上边距并过滤结果。设置上边距会将其移动到用户单击的文本视图下。如果有人想要代码,请留言,我会更新答案。

发布您尝试的代码。..Iv用我的代码更新我的问题。..Iv用我的代码更新我的问题。..Iv用我的代码更新我的问题
ViewHolder item = (ViewHolder) holder.getTag();
...