2016-08-17 5 views
0

У меня есть класс Fragment и соответствующий класс адаптера. Мой класс фрагмент выглядит так -Android list view item click in adapter

@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     myAdapter = new MyAdapter(getActivity(), favourites); 
     msgListView.setAdapter(myAdapter); 
     return view; 
    } 

В MyAdapter,

@Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     ViewHolder1 viewHolder; 
     MyClass favouriteMessage = favouriteMessageList.get(position); 

     if (convertView == null) { 
      convertView = inflater.inflate(R.layout.favorites_fragment_list, null); 
      viewHolder = new ViewHolder1(); 
      viewHolder.favouriteMessagesList = (TextView)convertView.findViewById(R.id.favourites_list); 
      convertView.setTag(viewHolder); 
     }else{ 
      viewHolder = (ViewHolder1) convertView.getTag(); 
     } 
     //Update Your Views Here 
     viewHolder.favouriteMessagesList.setText(favouriteMessage.getText()); 

     return convertView; 
    } 

    public void setFavouritesData(ArrayList<FavouriteMessageWrapper> data) { 
     favouriteMessageList = data; 
     notifyDataSetChanged(); 
    } 

Я хочу реализовать список просмотра элемента по щелчку слушателя. Где его реализовать? Если я попытаюсь сделать это в onCreateView моего фрагмента, это будет null.

+0

Вы можете отправить журнал ошибок? –

+0

, если вы делаете веб-запрос и эти данные, если вы собираетесь отображать, чем в onpostexecute, вы должны установить атрибут в listview –

ответ

1

Попробуйте, как это,

набор itemClickListener в фрагменте и делать это,

msgListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
           @Override 
           public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
            MyClass favouriteMessage = favourites.get(position); 
            String favorite_message = favouriteMessage.STRING_NAME; 
           } 
          }); 
+0

OnItemClick должен быть в onCreateView моего фрагмента? –

+0

есть, после установка адаптор. – Exigente05

+0

проверить мой обновленный ответ. – Exigente05

0

Не устанавливайте аддстра на создание. setadapter после получения data.like http method set adapter в методе onpost.

+0

msgListView = (Listview) view.findviewByid (R.id.msgListView); msgListView.setAdapter (myAdapter); –

0

Сделайте свой фрагмент реализации OnItemSelectedListener и после

msgListView.setAdapter(myAdapter); в вашем onCreateView()

msgListView.setOnItemSelectedListener(this).

+0

Я реализовал это уже, но он дает мне null on onItemClick –

+0

вы можете опубликовать свой onItemClick и не забудьте инициализировать свой списокView с помощью findViewBytId (R.id ....) –

0

ли все инициализации в onCreateView():

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.fragementName, container, false);//put fragment name of your 
    msgListView=(ListView)view.findViewById(R.id.listView); 
    return view; 
} 

Реализовать OnItemClickListener в вашем фрагменте и в onActivityCreated() адаптер установки и itemClickListener:

@Override 
public void onActivityCreated(@Nullable Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 
    myAdapter = new MyAdapter(getActivity(), favourites); 
    msgListView.setAdapter(myAdapter); 
    msgListView.setOnItemClickListener(this); 
} 
+0

Я не получил вас ... Не могли бы вы объясните это мне более подробно, пожалуйста, –

+0

Пожалуйста, разместите весь свой класс фрагментов, плохо сделайте редактирование, и вы поймете –

+0

Я реализовал как ваш путь ... Но все-таки мой просмотр списка ites равен null после того, как onItemClick –

0

вы можете реализовать onClickListener внутри адаптера вместо

public View getView(int position, View convertView, ViewGroup parent) { 

    viewHolder.favouriteMessagesList.setOnClickListener(new OnClickListener() { 
     public void onClick(View v) 
      { 
       //perform action 
      } 
     }); 

    return convertView; 
} 

надеются, что решить вашу проблему