2016-08-05 19 views
-1

私はフラグメントを使用していますが、ダイアログを使用してカスタムリストビューを作成したので、リストビューでアイテムをクリックしたかったのです。これは私が以下のようにしたときに何の反応も出さない。 誰かを確認してください。リストビューonitemclickは、アンドロイドのフラグメント内のダイアログボックスでは機能しません

 iv_fav_list.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 
        dialog = new Dialog(getActivity()); 
        dialog.setContentView(R.layout.dialog_fav_country_list); 

        lv_custom_list_fav_con = (ListView) dialog.findViewById(R.id.list_fav_country); 
        CFLA = new CustomFavCountryListAdapter(countryList, CountryActivityFragment.this.getActivity()); 
        lv_custom_list_fav_con.setAdapter(CFLA); 
        dialog.show(); 
        lv_custom_list_fav_con.setOnItemClickListener(new OnItemClickListener() { 
         @Override 
         public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { 

          Toast.makeText(CountryActivityFragment.this.getActivity(), "test", Toast.LENGTH_LONG).show(); 

         } 
        }); 

       } 
      }); 

アダプタクラスは、アダプタのインターフェイス

public interface OnDialogListClickListener { 
    void onItemClick(Country item); 
} 

アダプタコンストラクタを介してパラメータとしてこのインタフェースを合格とにgetView方法で膨張ビューのsetOnClickListenerとして設定

ArrayList<Country> mCountryList; 
    Context mContext; 
    int position; 
    Country cnt; 
    OnDialogListClickListener mlistener; 

    public interface OnDialogListClickListener { 
     void onItemClick(int position); 
    } 

    public CustomFavCountryListAdapter(ArrayList<Country> countryList, Context context, OnDialogListClickListener listener) { 

     this.mCountryList = countryList; 
     this.mContext = context; 
     this.mlistener = listener; 
    } 

    @Override 
    public int getCount() { 
     return mCountryList.size(); 
    } 

    @Override 
    public Object getItem(int i) { 

     return mCountryList.get(i); 

    } 

    @Override 
    public long getItemId(int i) { 
     return mCountryList.get(i).getCountryID(); 
    } 

    @Override 
    public View getView(int i, View view, final ViewGroup viewGroup) { 


     position = i; 
     LayoutInflater inflater = (LayoutInflater) mContext 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

     View convertView = inflater.inflate(R.layout.custom_fav_country_list, viewGroup, 
       false); 
     TextView tv_fav_con_name = (TextView) convertView.findViewById(R.id.tv_custom_fav_country_name); 
     tv_fav_con_name.setText(mCountryList.get(i).getCountryName()); 

     convertView.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       mlistener.onItemClick(position); 
      } 
     }); 

     convertView.setTag(mCountryList.get(i).getCountryName()); 
     return convertView; 
    } 


} 
+0

クリックリスナーでコードをデバッグしましたか? –

+0

いいえ、これはそこにも応答していません。 – jacks

答えて

0

を作成していますアダプタ。

@Override 
public View getView(int i, View view, final ViewGroup viewGroup) { 


    LayoutInflater inflater = (LayoutInflater) mContext 
      .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

    View convertView = inflater.inflate(R.layout.custom_fav_country_list, viewGroup, 
      false); 

    Country country = mCountryList.get(i); 
    TextView tv_fav_con_name = (TextView) convertView.findViewById(R.id.tv_custom_fav_country_name); 
    tv_fav_con_name.setText(country.getCountryName()); 

    convertView.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      mlistener.onItemClick(country); 
     } 
    }); 

    convertView.setTag(country.getCountryName()); 
    return convertView; 
} 

このインターフェイスをフラグメントで実装します。

private CustomFavCountryListAdapter.OnDialogListClickListener onDialogListClickListener = new CustomFavCountryListAdapter.OnDialogListClickListener() { 
    @Override 
    public void onItemClick(Country item) { 
     Toast.makeText(getActivity(), country.getCountryName(), Toast.LENGTH_SHORT).show(); 
    } 
}; 

このようなアダプタを作成します。

CFLA = new CustomFavCountryListAdapter(countryList, CountryActivityFragment.this.getActivity(), onDialogListClickListener); 
+0

しかし、これは常に同じリスト項目を与える、私はそれが動的になる必要がある – jacks

+0

あなたはアダプタクラスを投稿できますか? – faranjit

+0

しかし、これは常に同じアイテムを与える、私はリストから動的なアイテムを取得する必要があります – jacks

関連する問題