2016-08-17 63 views
0

我有一個片段類和相應的適配器類。我的片段類看起來是這樣的 -Android列表查看項目點擊適配器

@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中做到這一點,它是空的。

+0

你能不能把你的錯誤日誌? –

+0

如果你提出web請求,那麼你要顯示的數據比在onpostexecute中顯示的要多,你必須在列表視圖上設置適配器 –

回答

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應該在我的Fragment的onCreateView中? –

+0

是的,設置好適配器後。 – Exigente05

+0

檢查我的更新答案。 – Exigente05

0

不要在創建時設置adpter。 setadapter獲取data.like http方法在onpost方法中設置適配器。

+0

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

0

讓您的片段實施OnItemSelectedListener

onCreateView()

msgListView.setOnItemSelectedListener(this)msgListView.setAdapter(myAdapter);後。

+0

我已經實現了這一點,但它給了我空onItemClick –

+0

你可以發佈你的onItemClick,不要忘記初始化您的listView使用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

我實現了你的方式......但仍然我的列表視圖是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; 
} 

希望它能解決你的問題

相關問題