2016-04-23 29 views
0

こんにちは、私のコードで不明なエラーが発生しました。私はコードを完成させましたが、実行すると "dataprovider"に戻ります。誰でも私を助けてくれますか?画像付きカスタムリストビュー

私の断片。

import android.os.Bundle; 
import android.support.v4.app.ListFragment; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ListView; 



public class Places_Fragment extends ListFragment { 
    ListView listView; 
    int[] images ={R.drawable.cake_1,R.drawable.cake_2,R.drawable.cake_3,R.drawable.cake_4,R.drawable.cake_5,R.drawable.cake_6}; 
    String[] places; 
    PlaceAdapter adapter; 


    public static Places_Fragment newInstance() { 
     Places_Fragment fragment = new Places_Fragment(); 
     return fragment; 

    } 

    public Places_Fragment() { 
     // Required empty public constructor 

    } 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 
     View rootView = inflater.inflate(R.layout.fragment_places_, container, false); 
     listView =(ListView)rootView .findViewById(R.id.listView); 
     places = getResources().getStringArray(R.array.places); 
     int i=0; 
     adapter = new PlaceAdapter(getActivity(),R.layout.row_layout); 
     listView.setAdapter(adapter); 
     for(String item: places) 
     { 
      PlaceDataProvider dataProvider = new PlaceDataProvider(images[i],places[i]); 
      adapter.add(dataProvider); 
      i++; 
     } 
     return rootView; 
    } 
} 

私のカスタムアダプター。

import android.content.Context; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ArrayAdapter; 
import android.widget.ImageView; 
import android.widget.TextView; 

import java.util.ArrayList; 
import java.util.List; 

/** 
* Created by Bonfire-ADv on 4/23/2016. 
*/ 
public class PlaceAdapter extends ArrayAdapter { 
    List list =new ArrayList(); 

    public PlaceAdapter(Context context, int resource) { 
     super(context, resource); 
    } 
    static class DataHandler 
    { 
     ImageView images; 
     TextView Places; 

    } 

    @Override 
    public void add(Object object) { 
     super.add(object); 
     list.add(object); 
    } 

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

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

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     View row; 
     row = convertView; 
     DataHandler handler; 
     if (convertView== null) 
     { 
      LayoutInflater inflater = (LayoutInflater) this.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      row = inflater.inflate (R.layout.row_layout, parent, false); 
      handler = new DataHandler(); 
      handler.images = (ImageView) row.findViewById(R.id.image_view); 
      handler.Places = (TextView) row.findViewById(R.id.place_title); 
      row.setTag(handler); 
     } 
     else 
     { 
      handler = (DataHandler) row.getTag(); 
     } 
     PlaceDataProvider dataProvider; 
     dataProvider = (PlaceDataProvider) this.getItem(position); 
     handler.images.setImageResource(dataProvider.getImages()); 
     handler.Places.setText(dataProvider.getPlaces()); 

     return row; 
    } 
} 

私のデータプロバイダ。

package com.selfstudios.cakeplanet; 


public class PlaceDataProvider { 

    private int images; 
    private String places; 

    public PlaceDataProvider(int images,String places) 
    { 
     this.setImages(images); 
     this.setPlaces(places); 
    } 

    public int getImages() { 
     return images; 
    } 

    public void setImages(int images) { 
     this.images = images; 
    } 

    public String getPlaces() { 
     return places; 
    } 

    public void setPlaces(String places) { 
     this.places = places; 
    } 
} 

my frag xml。

<LinearLayout 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.selfstudios.cakeplanet.Places_Fragment"> 

    <!-- TODO: Update blank fragment layout --> 


    <ListView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/listView" 
     android:layout_weight="1" /> 
</LinearLayout> 

my row xml。

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" android:layout_height="80dp"> 

    <ImageView 
     android:layout_width="100dp" 
     android:layout_height="75dp" 
     android:id="@+id/image_view" 
     android:layout_alignParentStart="true" 
     android:layout_alignParentLeft="true" 
     android:paddingStart="2dp" 
     android:paddingLeft="2dp" 
     android:paddingEnd="2dp" 
     android:src="@drawable/cake_1" 
     /> 
    <TextView 
     android:id="@+id/place_title" 
     android:layout_width="175dp" 
     android:layout_height="75dp" 
     android:text="place name" 
     android:gravity="center" 
     android:layout_alignParentTop="false" 
     android:layout_centerHorizontal="true" 
     /> 
    <View 
     android:layout_width="match_parent" 
     android:layout_height="2dp" 
     android:background="@color/colorPrimaryDark" 
     android:layout_alignBottom="@+id/image_view"> 

    </View> 

</RelativeLayout> 
+1

for(String item: places) 

を交換してみてください。 –

+0

エラーは私が何を意味していたのか...私がアプリをテストしたとき –

+0

あなたは明確にする必要があります。 "それは私を「dataprovider」に戻します」とは本当に何も意味しません。 ?あなたのIDEはエラーを示していますか? –

答えて

0

あなたの質問は、あなたが 『データプロバイダ」、それは戻って私を送る』と言うとき、あなたは何を意味手の込んだしてください不明である、より伝統的な

for(int i; i < places.size(); i++ 
関連する問題