2016-08-17 6 views
0

私はFragmentクラスと対応するアダプタークラスを持っています。私は、クリックリスナーにリストビュー項目を実装したいMyAdapterでAndroidリストの表示アイテムアダプターをクリック

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

@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

Webリクエストを行い、そのデータをonpostexecuteよりも表示しようとすると、リストビューでsetadapterを実行する必要があります –

答えて

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

作成時にadpterを設定しないでください。データを取得した後のsetadapter httpメソッドはonpostメソッドでアダプタを設定します。

+0

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

0

は、あなたのフラグメントがOnItemSelectedListenerを実装して作成した後、あなたのonCreateView()

msgListView.setOnItemSelectedListener(this)

msgListView.setAdapter(myAdapter);

+0

私はこれを既に実装しましたが、onItemClickにnullを返します –

+0

あなたはonItemClickを投稿できますか?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; 
} 

onActivityCreated()セットアップアダプタとitemClickListenerであなたのフラグメントと でOnItemClickListenerを実装します。

@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; 
} 

はあなたのエラーログを送信することができ、それは

関連する問題