2016-11-16 5 views
-1

で正しいコンテキストを取得、私は私のアダプタでアダプタおよびフラグメント

エラーエラーを取得しています:(26、20)エラー:互換性のない型:MainFragmentアクティビティ

に変換することはできませんし、私はと思われるがその断片が断片

アダプタ

public class CustomListAdapter extends ArrayAdapter<String> { 

    private final Activity context; 
    private final String[] itemname; 
    private final Integer[] imgid; 

    public CustomListAdapter(MainFragment context, String[] itemname, Integer[] imgid) { 
     super(context, R.layout.mylist, itemname); 
     // TODO Auto-generated constructor stub 
     this.context=context; 
     this.itemname=itemname; 
     this.imgid=imgid; 
    } 

    public View getView(int position,View view,ViewGroup parent) { 
     LayoutInflater inflater=context.getLayoutInflater(); 
     View rowView=inflater.inflate(R.layout.mylist, null,true); 

     TextView txtTitle = (TextView) rowView.findViewById(R.id.item); 
     ImageView imageView = (ImageView) rowView.findViewById(R.id.icons); 
     TextView extratxt = (TextView) rowView.findViewById(R.id.textView1); 

     txtTitle.setText(itemname[position]); 
     imageView.setImageResource(imgid[position]); 
     extratxt.setText("Description "+itemname[position]); 
     return rowView; 

    }; 
} 

とは対照的に、私が使用しようとしています文脈のタイプは活動のためであるので、 XML

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       xmlns:tools="http://schemas.android.com/tools" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       tools:context ="com.xera.deviceinsight.home.MainFragment"> 
      <!--  tools:context="{relativePackage}.${activityClass}" >--> 

    <ListView 
     android:id="@+id/list" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" > 
    </ListView> 

</RelativeLayout> 
+0

viewHolder.getView().getContext()

を使用することができますあなたのMainFragmentクラスからActivityのコンテキストをgetActivity()として渡します。 –

答えて

0

アダプタ用

public class MainFragment extends Fragment { 

    ListView list; 
    String[] itemname ={ 
      "Safari", 
      "Camera", 
      "Global" 
      /*"FireFox", 
      "UC Browser", 
      "Android Folder", 
      "VLC Player", 
      "Cold War"*/ 
    }; 

    Integer[] imgid={ 
      R.drawable.watersensoricon, 
      R.drawable.ic_shutoff, 
      R.drawable.ic_camera, 

    }; 


    public MainFragment() 
    { 
    } 


    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     // Bundle bundle = this.getArguments(); 
     //Integer data = EventBus.getDefault().removeStickyEvent(Integer.class); 
     //if (data != null) 
     //{ 
     // classificationGroupFilter = data.intValue(); 
     //} 

     // DashboardActivity activity = (DashboardActivity) getActivity(); 
     // int call = activity.openCallLogs(); 
     View view = inflater.inflate(R.layout.icons_main, container, false); 
     //load(view); 
     setupList(view); 

     return view; 
    } 

// @Override 
private void setupList(View view){ 
     //super.onCreate(savedInstanceState); 
     //setContentView(R.layout.icons_main); 

     CustomListAdapter adapter=new CustomListAdapter(this, itemname, imgid); 
     list=(ListView)view.findViewById(R.id.list); 
    //(ListView)view.findViewById(R.id.lv_listview); 
     list.setAdapter(adapter); 
     list.setOnItemClickListener(new OnItemClickListener() { 

      @Override 
      public void onItemClick(AdapterView<?> parent, View view, 
              int position, long id) { 
       // TODO Auto-generated method stub 
       String Slecteditem= itemname[+position]; 
       //Toast.makeText(getApplicationContext(), Slecteditem, Toast.LENGTH_SHORT).show(); 

      } 
     }); 
    } 
} 

レイアウトはActivitycontextが必要です。 Activityコンテキストにアクセスするには、フラグメントのメソッドgetActivity()を使用できます。あなたはfragmentActivityに接続されていることを確認する必要があります。だから、これは

CustomListAdapter adapter=new CustomListAdapter(getActivity(), itemname, imgid); 
CustomListAdapter adapter=new CustomListAdapter(getActivity(), itemname, imgid); 
0

変更

CustomListAdapter adapter=new CustomListAdapter(this, itemname, imgid); 

CustomListAdapter adapter=new CustomListAdapter(this, itemname, imgid); 

を以下置き換える修正する

あなたのケースではthisMainFragmentへのリンクであるため、アクティビティではありません。

+0

私はどのようにフラグメントのためのactvityをコード化して添付することができるか見てみましょう。私と一緒に耐えてください私は断片で経験されていません – Zidane

+0

@ジダンどのように活動に断片を添付するには?私は理解できませんでした.- – DEADMC

+0

助けてくれてありがとうございました。私はアクティビティにアタッチする必要がなくなりました。 – Zidane

0

あなたはあなたの最初のパラメータがフラグメントである、それはコンテキストでなければなりませんし、あなたがすべきCustomListAdapterでonCreateViewHolderで

viewGroup.getContext()

、またはonBindViewHolder

+0

誰かがこれを設定する方法を見ることができるチュートリアルへのリンクを持っていますか? – Zidane

+0

それはビューですすべてのビューのコンテキストを取得することができます。 –

+0

最初のものはビューグループ(ビューを拡張)なので、2番目のビューと同じメソッドです –

関連する問題