自定义列表视图与图像

时间:2016-04-23 16:38:49

标签: java android android-layout listview

大家好我刚接触到android dev和我的代码有一个未知错误,我完成了代码,但是当我运行它时,我会回到" 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>

我的行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 个答案:

答案 0 :(得分:0)

尝试替换

for(String item: places)

更传统的

for(int i; i < places.size(); i++