我正在尝试创建一个应用程序,以便在点击时显示 public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_jobs, container, false);
ArrayList<JobListDataProvider> listJobs = GetRequests();
ListView lv = (ListView)rootView.findViewById(R.id.listViewJobs);
lv.setAdapter(new JobsListAdapter(getActivity(), listJobs));
//.....bindind on click....
Button pickup = (Button) rootView.findViewById(R.id.button_pickup_list);
pickup.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//......................
}
});
return rootView;
}
行的详细信息。我为搜索选项添加了一个过滤器和三个ListView
。
如果我使用所有选项进行搜索,我的应用程序会显示一个成员三次,这就是我在filter()方法中注释掉两个条件的原因。
但主要的问题是,当我正在搜索成员时,它搜索得很好但是当点击搜索结果时,似乎EditText
行的位置发生了变化。例如,如果我找到三个搜索结果,第一个位于第0位,第二个位于第1位,第三个位于第2位。
Listview点击事件无需搜索即可正常工作。
我需要过滤之前的旧位置,以便通过ListView
将其发送到另一个Intent
,这将为每个成员显示不同的数据。
ListViewAdapter.java类 `
Activity
答案 0 :(得分:1)
要在onCLick()
方法中获取项目的“旧”位置,请使用
arraylist.indexOf( getItem(position) )
更改您的过滤方法,以避免多次添加相同的项目:
// Filter Class
public void filter(String charText) {
charText = charText.toLowerCase(Locale.getDefault());
worldpopulationlist.clear();
if (charText.length() == 0) {
worldpopulationlist.addAll(arraylist);
}
else {
boolean addToList;
for (WorldPopulation wp : arraylist) {
addToList = false;
if (wp.getCountry().toLowerCase(Locale.getDefault())
.contains(charText) ) {
addToList = true;
}
if(wp.getRank().toLowerCase(Locale.getDefault())
.contains(charText)) {
addToList = true;
}
if (wp.getPopulation().toLowerCase(Locale.getDefault())
.contains(charText)) {
addToList = true;
}
// now add the item to your list if it matches the search criteria
if (addToList) {
worldpopulationlist.add(wp);
}
}
notifyDataSetChanged();
}
}