2015-04-06 3 views
0

Нужна некоторая коррекция в моем коде, я пытаюсь передать три строки из элемента списка в следующую операцию, используя намерения. Все прекрасно работает, но проблема в том, что я не могу понять, как получить точную позицию элемента списка, чтобы я только выбирал содержимое этого элемента списка и переносил их на другое действие.Получите точную позицию элемента списка, когда выбрано

ActivityOne.java

int ctryId; 
    mCommentList = new ArrayList<HashMap<String, String>>(); 

    try { 

     mComments = json.getJSONArray(TAG_POSTS); 

     for (int i=mComments.length() - 1; i>=0; i--) { 
      JSONObject c = mComments.getJSONObject(i); 

      ctryId = c.getInt(TAG_COUNTRY_ID); 
      if (ctryId == 2){ 

       ListItem item = new ListItem(); 

       item.setRegionId(c.getString(TAG_REGION_ID)); 
       item.setRegionName(c.getString(TAG_REGION_NAME)); 
       item.setCountryId(c.getString(TAG_COUNTRY_ID)); 

       listItems.add(item); 
      } 

      listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
       @Override 
       public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) { 

        Intent intent = new Intent(RegionsOfVisit.this, LocationsActivity.class); 
        intent.putExtra("Regions_of_visit_region_id", item.getRegionId()); 
        intent.putExtra("Regions_of_visit_region_name", item.getRegionName()); 
        intent.putExtra("Regions_of_visit_country_id", item.getCountryId()); 
        startActivity(intent); 

       } 
      }); 

     } 

     // notify data changes to list adapater 
     regionsOfVisitListAdapter.notifyDataSetChanged(); 

Любые предложения будут высоко оценены

+0

item.getRegionId(). Здесь вы можете получить к нему доступ? Вы можете скомпилировать эту строку без ошибок. – Amsheer

+0

Amsheer, я могу скомпилировать без ошибок – Richmahnn

ответ

1

Я не уверен в вашей структуре кодирования, но ниже фрагмента может помочь вам.

Предполагая, что ваше listview составлено из элементов объектов ListItem, а адаптер принимает список объектов ListItem.

Тогда ваш onitemclicklistener может работать, как, как указано ниже:

ArrayList<ListItem> list; 
//fill your list with data 
ListAdapter mAdapter = new ListAdapter(context,list); 
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
       @Override 
       public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) { 

ListItem item = ListItem item = list.get(position); 
        Intent intent = new Intent(RegionsOfVisit.this, LocationsActivity.class); 
        intent.putExtra("Regions_of_visit_region_id", item.getRegionId()); 
        intent.putExtra("Regions_of_visit_region_name", item.getRegionName()); 
        intent.putExtra("Regions_of_visit_country_id", item.getCountryId()); 
        startActivity(intent); 

       } 
      }); 

Надеется, что это помогает ...

+0

Его работающая как шарм, спасибо – Richmahnn

2

Одно из изменений здесь:

Intent intent = new Intent(RegionsOfVisit.this, LocationsActivity.class); 
        intent.putExtra("Regions_of_visit_region_id", item.get(position).getRegionId()); 
        intent.putExtra("Regions_of_visit_region_name", item.get(position).getRegionName()); 
        intent.putExtra("Regions_of_visit_country_id", item.get(position).getCountryId()); 
        startActivity(intent); 

Еще одно изменение сделать это как глобальное

ListItem item = new ListItem(); 
+0

Я не могу использовать get(), потому что его нет в моем классе ListItem – Richmahnn

Смежные вопросы