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();
...