当我点击其中的一个项目时,我正试图在列表视图中获得正确的位置。我启用了setTextFilterEnabled。这是我的代码
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
.....
//get files
getfile(root);
adapter = (new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mylist));
listView = (ListView) findViewById(R.id.view);
listView.setAdapter(adapter);
listView.setTextFilterEnabled(true);
.....
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String pdfPath = Environment.getExternalStorageDirectory() + fileList.get(position).getName();
Intent intent = new Intent(MainActivity.this, NextActivity.class);
intent.putExtra("location_of_file", pdfPath);
startActivity(intent);
}
});
.....
这是我的ArrayList获取文件
public ArrayList<File> getfile(File dir) {
File listFile[] = dir.listFiles();
if (listFile != null && listFile.length > 0) {
for (int i = 0; i < listFile.length; i++) {
if (listFile[i].isDirectory()) {
fileList.add(listFile[i]);
getfile(listFile[i]);
} else {
if (listFile[i].getName().endsWith(".pdf"))
{
fileList.add(listFile[i]);
}
}
}
}
return fileList;
}
这是使用过滤的地方
private TextWatcher filterTextWatcher = new TextWatcher() {
public void afterTextChanged(Editable s) {
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
public void onTextChanged(CharSequence s, int start, int before,
int count) {
adapter.getFilter().filter(s);
listView.setVisibility(View.INVISIBLE); //when input text is changed hide list
}
};
在我的listview onClickListener中,它总是给我错误的位置并得到错误的文件路径。
请帮忙。谢谢。
答案 0 :(得分:1)
替换String pdfPath = Environment.getExternalStorageDirectory() + fileList.get(position).getName();
使用String pdfPath = Environment.getExternalStorageDirectory() + ((File)parent.getAdapter().getItem(position)).getName();
答案 1 :(得分:0)
这是基于Mike对我的问题的评论。
改变
fileList.get(position).getName()
到
parent.getAdapter().getItem(position);
我是从valign
得到的