2016-03-11 3 views
-1

Я пытаюсь получить некоторые значения из элемента списка ListView, чтобы я мог открыть свое новое намерение с тем же заголовком и описанием, что и элемент ListView.Получить значения из определенного элемента ListView

У меня небольшие проблемы с этим, так как до недавнего времени я никогда не работал с ListViews. Может ли кто-нибудь помочь мне с этим, пожалуйста?

SocietySearch.java:

Специальный код в OnItemClick

public class SocietySearch extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { //TODO remember notifyDataSetChanged 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_society_search); 

     List<Society> societies = new ArrayList<>(); 
     ServerRequests serverRequest1 = new ServerRequests(SocietySearch.this); 
     serverRequest1.GetSocietyDataAsyncTask(societies, new GetSocietyCallback() { 

      @Override 
      public void done(final List<Society> societies) { 
       final ListView lv = (ListView) findViewById(R.id.ListView); 
       List<ListViewItem> items = new ArrayList<>(); 
       for (final Society s : societies) { 
        items.add(new ListViewItem() {{ 
         ThumbnailResource = R.drawable.test; 
         Title = s.socName; 
         Description = s.socDes; 
        }}); 
       } 
       final CustomListViewAdapter adapter = new CustomListViewAdapter(SocietySearch.this, items); 
       lv.setAdapter(adapter); 

       SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); 
       SearchView searchView = (SearchView) findViewById(R.id.search); 
       searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName())); 
       searchView.setQueryHint("Search.."); 

       searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { 
        @Override 
        public boolean onQueryTextSubmit(String query) { 
         return false; 
        } 

        @Override 
        public boolean onQueryTextChange(String text) { 
         adapter.getFilter().filter(text); 
         return false; 
        } 
       }); 

       lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
        @Override 
        public void onItemClick(AdapterView<?> adapter, View v, int position, long id) { 
         Toast.makeText(getApplicationContext(), "position: " + position, Toast.LENGTH_LONG).show(); 
         Intent societyPage = new Intent(SocietySearch.this, SocietyPage.class); 
         startActivity(societyPage); 

         List<ListViewItem> obj = items.getItem(position); 
         //Here I want to get all values from clicked item position and assign them to variables 

         String value = obj.toString(); 
         Log.d("MyLog", "Value is: " + value); 
        } 
       }); 
      } 
     }); 
    } 

    public class ListViewItem { 
     public int ThumbnailResource; 
     public String Title; 
     public String Description; 

     @Override 
     public String toString() { 
      return Title; 
     } 
    } 
+0

Вы можете использовать третья сторона шины, один из которых является 'Отто Bus' –

+0

' items.getItem() 'возвращает один элемент не' list' элементов – tyczj

ответ

1

Во-первых, я считаю, что ниже не собирается возвращать список. Он вернет объект ListViewItem.

List<ListViewItem> obj = items.getItem(position); 

Если я правильно понял ваш вопрос. Вы захотите получить объект и передать эти значения в намерение. Пример ниже.

ListViewItem item = items.getItem(position); 
String title = item.Title; 
String desc = item. Description; 
int thumbnail = item. ThumbnailResource; 

Intent societyPage = new Intent(SocietySearch.this, SocietyPage.class); 
i.putExtra("title", title); 
i.putExtra("desc", desc); 
i.putExtra("thumbnail", thumbnail); 
startActivity(societyPage); 
+0

Похоже, что это работает, я буду обновите вас в ближайшее время – kmil

+0

Хорошо ответил! Мне очень помогли, я просто изменил «ListViewItem item = items.getItem (position);' to ListViewItem item = (ListViewItem)). AdapterAdapter(). GetItem (position); ' – kmil

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