【发布时间】:2015-12-25 17:52:32
【问题描述】:
我有一个包含项目的列表视图。当我使用 AutoCompleteTextView 进行搜索时,新项目会添加到列表视图中,但是当我单击 onItemClick 时,它会获得旧位置。我可以在新的列表视图中获得位置吗?
public interface MyClickListener {
public void click(SanPham sanPham);
}
@Override
public View onCreateView(LayoutInflater inflater,
@Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.my_fragment, null);
sanPhams = new ArrayList<SanPham>();
SanPham sanPham0 = new SanPham("Coca Cola", "Giá: 165.000/thùng",
R.drawable.flag_coca, 1,
"Bảo hành: 12 tháng. \r\n Nguồn gốc: Chính hãng. \r\n Hãng sản xuất:" +
"Coca Cola. \r\n Dung Tích(ml)/Lon: 330. \r\n Xuất xứ: Việt Nam");
SanPham sanPham1 = new SanPham("Pepsi", "Giá: 165.000/thùng",
R.drawable.flag_pepsi, 1,
"Bảo hành: 12 tháng. \r\n Nguồn gốc: Chính hãng. \r\n Hãng sản xuất:" +
"pepsi. \r\n Dung Tích(ml)/Lon: 330. \r\n Xuất xứ: Việt Nam");
SanPham sanPham2 = new SanPham("suafami", "Giá: 165.000/thùng",
R.drawable.flag_suafami, 2,
"Bảo hành: 12 tháng. \r\n Nguồn gốc: Chính hãng. \r\n Hãng sản xuất:" +
"suafami. \r\n Dung Tích(ml)/Lon: 330. \r\n Xuất xứ: Việt Nam");
SanPham sanPham3 = new SanPham("7up", "Giá: 165.000/thùng",
R.drawable.flag_7up, 1,
"Bảo hành: 12 tháng. \r\n Nguồn gốc: Chính hãng. \r\n Hãng sản xuất:" +
"7up. \r\n Dung Tích(ml)/Lon: 330. \r\n Xuất xứ: Việt Nam");
SanPham sanPham4 = new SanPham("number1", "Giá: 165.000/thùng",
R.drawable.flag_number1, 1,
"Bảo hành: 12 tháng. \r\n Nguồn gốc: Chính hãng. \r\n Hãng sản xuất:" +
"number1. \r\n Dung Tích(ml)/Lon: 330. \r\n Xuất xứ: Việt Nam");
SanPham sanPham5 = new SanPham("nuocepdau", "Giá: 165.000/thùng",
R.drawable.flag_nuocepdau, 2,
"Bảo hành: 12 tháng. \r\n Nguồn gốc: Chính hãng. \r\n Hãng sản xuất:" +
"nuocepdau. \r\n Dung Tích(ml)/Lon: 330. \r\n Xuất xứ: Việt Nam");
SanPham sanPham6 = new SanPham("sting", "Giá: 165.000/thùng",
R.drawable.flag_sting, 1,
"Bảo hành: 12 tháng. \r\n Nguồn gốc: Chính hãng. \r\n Hãng sản xuất:" +
"sting. \r\n Dung Tích(ml)/Lon: 330. \r\n Xuất xứ: Việt Nam");
SanPham sanPham7 = new SanPham("traxanh0do", "Giá: 165.000/thùng",
R.drawable.flag_traxanh0do, 1,
"Bảo hành: 12 tháng. \r\n Nguồn gốc: Chính hãng. \r\n Hãng sản xuất:" +
"traxanh0do. \r\n Dung Tích(ml)/Lon: 330. \r\n Xuất xứ: Việt Nam");
sanPhams.add(sanPham0);
sanPhams.add(sanPham1);
sanPhams.add(sanPham2);
sanPhams.add(sanPham3);
sanPhams.add(sanPham4);
sanPhams.add(sanPham5);
sanPhams.add(sanPham6);
sanPhams.add(sanPham7);
listView = (ListView) view.findViewById(R.id.listView1);
adapterListView =new AdapterListView(getActivity(), sanPhams);
listView.setAdapter(adapterListView);
AutoCompleteTextView autoCompleteTextView = (AutoCompleteTextView) view.findViewById(R.id.AutoCompleteTextView1);
String[] data = new String[]{"Coca Cola", "Pepsi", "suafami", "7up", "number1", "nuocepdau", "sting", "traxanh0do"};
ArrayAdapter<String> aa = new ArrayAdapter<String>(getActivity(), android.R.layout.select_dialog_item, data);
autoCompleteTextView.setAdapter(aa);
autoCompleteTextView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
ArrayList<SanPham> rs = new ArrayList<>();
for (int i = 0; i < sanPhams.size(); i++) {
if (sanPhams.get(i).getName() == (((TextView) view).getText())) {
rs.add(sanPhams.get(i));
}
}
listView.setAdapter(new AdapterListView(getActivity(), rs));
}
});
final ArrayAdapter<String> arrayAdapterSpiner = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_spinner_item, new String[]{"Tất cả",
"Nước Có Ga", "Nước Không Có Ga"});
Spinner spinner = (Spinner) view.findViewById(R.id.Spiner1);
spinner.setAdapter(arrayAdapterSpiner);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
ArrayList<SanPham> rs = new ArrayList<>();
if (position == 0)
rs = sanPhams;
else {
for (int i = 0; i < sanPhams.size(); i++) {
if (sanPhams.get(i).getType() == position) {
rs.add(sanPhams.get(i));
}
}
}
listView.setAdapter(new AdapterListView(getActivity(), rs));
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
textView = (TextView) view.findViewById(R.id.textView1);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if (textView == null) {
clickListener = (MyClickListener) getActivity();
clickListener.click(sanPhams.get(position));
} else {
textView.setText(sanPhams.get(position).getDescription() + "");
}
}
});
return view;
}
【问题讨论】:
-
据我了解,您每次使用
AutoCompleteTextView时都会创建一个新的AdapterListView,对吗?