항목을 클릭 한 후 데이터베이스에서 항목의 ID를 가져오고이 ID를 다른 활동으로 보내려고합니다.Android에서 getItemAtPosition 메소드로 ID 받기
java.lang.ClassCastException: java.lang.String cannot be cast to com.example.myPackage.Place
그 오류가 선으로 일으키는 : 나는 아래 줄에 그 선을 변경하는 경우 물론
Place mPlace = (Place)(lv.getItemAtPosition(position));
는 응용 프로그램이 작동하지만 난 점점
는 오류가 발생합니다 대신 화면에 표시되는 단일 행의 이름은 id입니다.
String str = (String)(lv.getItemAtPosition(position));
여기 내 전체 코드가 있습니다.
public class VisitedPlaces extends ListActivity {
private ArrayList<String> results = new ArrayList<String>();
protected void onCreate(Bundle savedInstanceState) {
.
.
.
fillTheList();
displayResultList();
}
public void fillTheList(){
DataBaseHelper dbHelper = new DataBaseHelper(this.getApplicationContext());
List<Place> placesList = new ArrayList<>();
String sql = "SELECT _id, Name, Description, Latidute, Longtidute FROM Places WHERE Visited=1";
placesList = dbHelper.getAllPlaces(sql);
for (Place place : placesList){
results.add(place.getPlaceName());
}
}
public void displayResultList() {
ListView lv = getListView();
lv.addHeaderView(tvNew);
lv.setTextFilterEnabled(true);
setListAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, results));
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
// String str = (String)(lv.getItemAtPosition(position));
Place mPlace = (Place)(lv.getItemAtPosition(position)); //HERE IS A PROBLEM
int mID = mPlace.getID();
Toast.makeText(getApplicationContext(),"Click ListItem: " + mID + ", " + id + ", " , Toast.LENGTH_LONG).show();
goToPlaceDescriptions(view, id);
}
});
}
public void goToPlaceDescriptions(View v, long id) {
Intent intent = new Intent(this, PlaceDescriptions.class);
intent.putExtra("id", id);
startActivity(intent);
}
}
좀 도와 줄 수 있습니까? 다음,
가 전역 변수로placesList
을 설정 올바른
Place
얻을이 줄을 쓰기 :
당신은 String 타입의 ArrayAdapter를 가지고 있습니다. Place 타입의 ArrayAdapter를 직접 만들고 싶을 것입니다. 또는 할 수있는 해킹은 다음과 같습니다. Place mPlace = placesList.get (position); – mlaHackingIsMagic