이 문제를 설명하는 방법에 대해서는 잘 모르겠지만 최선을 다할 것입니다. 나는 소리를 녹음하는 응용 프로그램을 가지고 있고 녹음이 끝나면 파일의 이름을 바꾸어야하고 파일이 다른 활동의 listview에 추가됩니다.항목을 계속 추가하는 동안 각 목록보기 항목에 onItemClickListener 추가
그래서 목록보기에 파일을 추가하면 내가 어떻게 여기에, 조금 더 복잡의 탭 레이아웃을 가지고 :
녹화 활동
if (getParent() instanceof FileNameProvider) {
((FileNameProvider) getParent()).onNewFileName(newFileName);
}
탭 레이아웃 활동
public void onNewFileName(Editable filename) {
LocalActivityManager activityManager = getLocalActivityManager();
getTabHost().setCurrentTabByTag("Library");
RecordedLibrary recLib = (RecordedLibrary) activityManager.getActivity("Library");
recLib.setFileName(filename);
}
마지막으로 내 라이브러리 (listview) 활동에 새 파일 이름이 있습니다.
public void setFileName(final Editable filename) {
Log.d("2", "Set filename from first activity " + filename);
}
그래서, 매번 나는 그것이 자동으로이 코드 목록보기에 추가되는, 파일 이름을 설정합니다
이public void setFileName(final Editable filename) {
Log.d("2", "Set filename from first activity " + filename);
//LISTVIEW (declared globally)
fileNames.add(filename.toString());
listView = (ListView) findViewById (R.id.mainListView);
listAdapter = new ArrayAdapter<String>(this, R.layout.simplerow, fileNames);
listView.setAdapter(listAdapter);
이제 내가 다음에 무엇을 할 것은 각 항목이 추가 된 자동 onItemClickListener를 추가하는 것입니다. 다른 이름이 이후이 파일은 다른 경로를 가지고,
switch (position){
case 0:
//code
break;
}
하지만 매번 내가 파일을 기록하기 때문에이 내 경우에는 할 수 없습니다 : 나는이 같은 switch 문이 할 수있는 것을 알고있다. 이것은 내가 그것을 시도하는 방법이다 :
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
Toast toast = Toast.makeText(getApplicationContext(), filename, Toast.LENGTH_SHORT);
toast.show();
}
});
이 작동하지 않습니다 중 하나마다 나는 목록보기, 파일 이름 변수 변경에 새 파일을 추가, 그래서이 코드는만큼 나는 단지 하나를 추가로 작동하기 때문에 항목을 listview에 추가하십시오. 두 번째 항목을 listview에 추가하자마자 toast는 내가 클릭 한 항목에 상관없이 두 번째 파일의 이름을 표시합니다.
모두가 이해하기를 바랍니다. 더 많은 정보를 추가해야하는지 알려주세요.
해결 방법 :
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
Toast toast = Toast.makeText(getApplicationContext(), fileNames.get(arg2), Toast.LENGTH_SHORT);
toast.show();
}
});
당신이 볼 수 있듯이, 나는 단순히 자세한 내용은 this answer를 참조하십시오, 'fileNames.get (ARG2)'에 'filaname'을 변경했습니다.
올바른지 또한 onItemClick에서 콜백에 의해 전달되지 않은 토스트에 "filename"을 씁니다. 그러나 어디에서 가져 왔는지 모릅니다. 대신 위치 (arg2)를 확인하고 귀하의 어댑터에있는 각각의 데이터의 파일 이름 – jpm
'onCreate'에 설정 –
@AlexFu 죄송합니다. 단지 답장을하기 전에 방금 정확히 말했기 때문에 내 의견을 삭제했습니다. 그러나 애플리케이션은 여전히 같은 방식으로 작동합니다. jpm이 나에게하라고 한 일을하려고 노력하고 있지만, 어떻게 달성해야할지 모르겠습니다. 어떻게 위치 (arg2)를 확인하고 파일 이름을 그렇게 얻는가? – Guy