单击android studio时从列表中获取项目ID
我正在创建一个日历应用程序,显示日期是否从json web获取事件的列表, 单击列表中的事件时,我希望在另一个活动中显示事件的详细信息,但每次单击项目时,TextView都会显示项目位置,而不是项目ID 我的侦听器代码单击android studio时从列表中获取项目ID,android,listview,onclicklistener,Android,Listview,Onclicklistener,我正在创建一个日历应用程序,显示日期是否从json web获取事件的列表, 单击列表中的事件时,我希望在另一个活动中显示事件的详细信息,但每次单击项目时,TextView都会显示项目位置,而不是项目ID 我的侦听器代码 list1.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?>
list1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
/*Uri test = Uri.parse("tel:3154431");
Intent intentPhone = new Intent(Intent.ACTION_DIAL, test);
startActivity(intentPhone);*/
Intent i = new Intent(getApplicationContext(), DetailList.class);
i.putExtra("id", id);
startActivity(i);
}
});
问题是,您正在发送长的额外数据,并试图从另一端获得一个包。修改您的代码,如下所示:
list1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
/*Uri test = Uri.parse("tel:3154431");
Intent intentPhone = new Intent(Intent.ACTION_DIAL, test);
startActivity(intentPhone);*/
Intent i = new Intent(getApplicationContext(), DetailList.class);
Bundle bundle = new Bundle();
bundle.putLong("id",id);
i.putExtras(bundle);
startActivity(i);
}
});
list1.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
/*uritest=Uri.parse(“电话:3154431”);
意向意向电话=新意向(意向.行动\拨号,测试);
startActivity(intentPhone)*/
Intent i=新的Intent(getApplicationContext(),DetailList.class);
Bundle=新Bundle();
bundle.putLong(“id”,id);
i、 putExtras(束);
星触觉(i);
}
});
您可以在自定义listview行中放置一个TextView(假设该TextView的id为tvMyId),并将其可见性设置为gone。在适配器中填充数据时,将id设置为该文本视图,并按如下方式检索id
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
//add this line
TextView tvMyId = convertTView.findViewById(R.id.tvMyId).
TextView action, studyProgram, universityName, time;
convertView = inflater.inflate(R.layout.list_item, parent, false);
action = (TextView) convertView.findViewById(R.id.marketing_action);
studyProgram = (TextView) convertView.findViewById(R.id.studyprogram);
universityName = (TextView) convertView.findViewById(R.id.univname);
time = (TextView) convertView.findViewById(R.id.time);
// int id = (scheduleInfo.get(position).getSchedId());
tvMyId.setText(scheduleInfo.get(position).getSchedId()); //and add this line
action.setText(scheduleInfo.get(position).getMarketingActionsInfo().getName());
studyProgram.setText(scheduleInfo.get(position).getProdiInfo().getProdiNameInfo().getProdiName());
universityName.setText(scheduleInfo.get(position).getProdiInfo().getUniversityInfo().getUnivName());
time.setText(scheduleInfo.get(position).getStartDate()+" - "+scheduleInfo.get(position).getEndDate());
}
return convertView;
}
ItemClickListener
list1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
TextView tv = view.findViewById(R.id.tvMyId);
String myId = tv.getString().toString();
Intent i = new Intent(getApplicationContext(), DetailList.class);
i.putExtra("id", myId);
startActivity(i);
}
});
list1.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
TextView tv=view.findviewbyd(R.id.tvMyId);
字符串myId=tv.getString().toString();
Intent i=新的Intent(getApplicationContext(),DetailList.class);
i、 putExtra(“id”,myId);
星触觉(i);
}
});
无论我们从适配器的getItemId()返回什么,都是我们在onItemClick(AdapterView父项、视图、int位置、长id)中得到的。
在您的情况下,您正在通过“位置”。所以,你在“id”中得到了相同的结果。因此,请根据您的需要进行更改
@Override
public long getItemId(int position) {
return position;
}
list1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
@覆盖
公共长getItemId(int位置){
返回位置;
}
list1.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
正确执行公共长getItemId(int位置)
list1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
TextView tv = view.findViewById(R.id.tvMyId);
String myId = tv.getString().toString();
Intent i = new Intent(getApplicationContext(), DetailList.class);
i.putExtra("id", myId);
startActivity(i);
}
});
@Override
public long getItemId(int position) {
return position;
}
list1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
list1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Bundle bundle = new Bundle();
Intent i = new Intent(getApplicationContext(), DetailList.class);
bundle.putLong("id",id);
i.putExtras(bundle);
startActivity(i)
}
});
try {
Intent in = getIntent();
Bundle b = in.getExtras();
long id= b.getLong("id");
} catch (Exception e) {
e.printStackTrace();
}