2017-02-08 4 views
0

GetItem не собирается назвать вот мой код его не работает, если я буду использовать деятельность, то его работу должным образом, но в фрагменте GetItem метод не позовет пожалуйста, помогитеGridView в фрагменте не работает

это мой фрагмент:

public class HomeFragment extends BaseFragment{ 

    private static final String TAG = "HomeFragment"; 
    private GridView gvMainItems; 
    private HomeFragmentGridAdapter homeFragmentGridAdapter; 
    private ArrayList<HashMap<String, String>> arrayList; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 

     View view=inflater.inflate(R.layout.fragment_home,container,false); 
     gvMainItems = (GridView) view.findViewById(R.id.gvMainItems); 

     arrayList = new ArrayList<>(); 
     for(int i = 1; i < 100; i++){ 
      HashMap<String, String> map = new HashMap<>(); 
      map.put("item", String.valueOf(i)); 
      arrayList.add(map); 
     } 

     homeFragmentGridAdapter = new HomeFragmentGridAdapter(getActivity(), arrayList); 
     gvMainItems.setAdapter(homeFragmentGridAdapter); 

     return view; 
    } 
    @Override 
    public void onClick(View view) { 

    } 
} 

Это мой адаптер:

public class HomeFragmentGridAdapter extends BaseAdapter { 
    private final Context context; 
    private final ArrayList<HashMap<String, String>> arrayList; 
    private ViewHolder holder; 

    public HomeFragmentGridAdapter(Context context, ArrayList<HashMap<String,String>> arrayList){ 
     this.context = context; 
     this.arrayList = arrayList; 
    } 

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

    @Override 
    public Object getItem(int position) { 
     return arrayList.get(position); 
    } 

    @Override 
    public long getItemId(int position) { 
     return position; 
    } 

    @Override 
    public View getView(int position, View cinvertview, ViewGroup viewGroup) { 

     if(cinvertview == null) { 
      holder = new ViewHolder(); 
      LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      cinvertview = inflater.inflate(R.layout.fragment_home_grid_raw, null, true); 
      holder.textView = (TextView) cinvertview.findViewById(R.id.textView); 
      cinvertview.setTag(holder); 
     }else{ 
      holder = (ViewHolder) cinvertview.getTag(); 
     } 
     Log.d(TAG, "getItem: "+arrayList.get(position).get("item")); 

     holder.textView.setText(arrayList.get(position).get("item")); 
     return cinvertview; 
    } 
    public class ViewHolder{ 

     public ImageView ivGridItem; 
     public TextView textView; 
    } 
} 

это XML

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
android:id="@+id/content_main" 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" 
app:layout_behavior="@string/appbar_scrolling_view_behavior" 
tools:context="com.neodocto.activity.MainActivity" 
tools:showIn="@layout/app_bar_main"> 



<GridView android:id="@+id/gvMainItems" 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:columnWidth="90dp" 
android:gravity="center" 
android:horizontalSpacing="10dp" 
android:numColumns="auto_fit" 
android:stretchMode="columnWidth" 
android:verticalSpacing="10dp" 
/> 
</LinearLayout> 
+0

Это происходит также, если ваш HomeFragment расширяет фрагмент вместо BaseFragment? –

+0

да же в Фрагменте также –

+0

@DharaPatel, какую ошибку вы получите? –

ответ

0

я изменить GridView к этому, и он работает

<GridView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/gvMainItems" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentLeft="true" 
     android:numColumns="4" /> 
1

Изменить этот код в HomeFragment:

homeFragmentGridAdapter = new HomeFragmentGridAdapter(getActivity().getApplicationContext(), arrayList); 

Поскольку Ваша конструкция использует контекст вместо FragmentActivity (возвращенное getActivity().

+0

i change getActivity(). GetApplicationContext() но не работает –

1

Пожалуйста, попробуйте на этом пути я имею работать нормально Change на адаптере, как

private final Context context; 
private final ArrayList<HashMap<String, String>> arrayList; 
private ViewHolder holder; 
LayoutInflater inflater; 

public HomeFragmentGridAdapter(Context context, ArrayList<HashMap<String, String>> arrayList) { 
    this.context = context; 
    this.arrayList = arrayList; 
    inflater = LayoutInflater.from(this.context); 
} 

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

@Override 
public Object getItem(int position) { 
    return position; 
} 

@Override 
public long getItemId(int position) { 
    return position; 
} 

@Override 
public View getView(int position, View cinvertview, ViewGroup viewGroup) { 

    if (cinvertview == null) { 
     holder = new ViewHolder(); 
     cinvertview = inflater.inflate(R.layout.list_purchase_items, null); 

     holder.textView = (TextView) cinvertview.findViewById(R.id.textView); 
     cinvertview.setTag(holder); 
    } else { 
     holder = (ViewHolder) cinvertview.getTag(); 
    } 
    Log.d(TAG, "getItem: " + arrayList.get(position).get("item")); 

    holder.textView.setText(arrayList.get(position).get("item")); 
    return cinvertview; 
} 

public class ViewHolder { 

    public ImageView ivGridItem; 
    public TextView textView; 
} 
+0

@DharaPatel, вы решили эту ошибку? –

+2

xml изменение файла, которое вы дали –

Смежные вопросы