我试图搜索这个,但无法获得任何正确的帮助。我正在尝试保持列表视图中的第一项修复并在此之后从数据库添加数据。我成功显示此类行为但问题当我在列表视图中使用项目点击时开始,我没有得到正确的项目我点击...片段如下 copyFetchedData 有来自数据库的数据
for(int i = 0;i<copyFetchedData.size();i++){
recentSearchedList.add(i, copyFetchedData.get(i).getName());
selectedAdapter.notifyDataSetChanged();
}
recentSearchedList.add(0,“我的位置”);
在上面的代码片段中,最后一行会覆盖添加元素的位置,并将“我的位置”置于第一个位置。现在,onitemclick的片段如下所示。
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
if (displayList == arg0) {
if(position == 0){
editLocation.setText("");
}
else{
String fetchedName = (String) displayList.getItemAtPosition(position);
Toast.makeText(getApplicationContext(), "Name is "+fetchedName, Toast.LENGTH_LONG).show();
Constants.searchedLocLat = copyFetchedData.get(position).getLat();
Constants.searchedLocLon = copyFetchedData.get(position).getLon();
Constants.searchedLocName = copyFetchedData.get(position).getName();
editLocation.setText(Constants.searchedLocName);
}
}
}
输出我得到了这个提取错误位置的元素。我知道它因为我强行在0位添加元素导致这种行为可以有人请告诉我正确的方法来做它..
答案 0 :(得分:4)
您可以使用addHeaderView()
来执行此操作,
ListView lv = (ListView)findViewById(R.id.listview1); //your listview object
View hvw = findViewById(R.id.listrow);
//Suppose you have one textview in that Row
TextView tv = hvw.findViewById(R.id.tv1); // get textview object
tv.setText("Your first item value"); // set text
lv.addHeaderView(hvw); // add header view