单击android studio时从列表中获取项目ID

单击android studio时从列表中获取项目ID,android,listview,onclicklistener,Android,Listview,Onclicklistener,我正在创建一个日历应用程序,显示日期是否从json web获取事件的列表, 单击列表中的事件时,我希望在另一个活动中显示事件的详细信息,但每次单击项目时,TextView都会显示项目位置,而不是项目ID 我的侦听器代码 list1.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?>

我正在创建一个日历应用程序,显示日期是否从json web获取事件的列表, 单击列表中的事件时,我希望在另一个活动中显示事件的详细信息,但每次单击项目时,TextView都会显示项目位置,而不是项目ID

我的侦听器代码

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();
   }