Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 带有图像的自定义listview_Java_Android_Android Layout_Listview - Fatal编程技术网

Java 带有图像的自定义listview

Java 带有图像的自定义listview,java,android,android-layout,listview,Java,Android,Android Layout,Listview,大家好,我是android开发者的新手,我的代码有一个未知错误,我完成了代码,但当我运行它时,它会将我发送回“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开发者的新手,我的代码有一个未知错误,我完成了代码,但当我运行它时,它会将我发送回“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;
    }
}
我的FragXML

<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>

尝试更换

for(String item: places)
用更传统的

for(int i; i < places.size(); i++
for(int i;i
您的问题不清楚,请详细说明您所说的“它将我送回“数据提供商”是什么意思。错误就是我的意思……每当我测试应用程序时。您需要澄清。“它将我送回“数据提供商”是什么意思”“对我们来说真的没有任何意义。那个类是否引发异常?您的IDE是否指示那里有错误?抱歉,我收到一个异常,java.lang.ArrayIndexOutOfBoundsException:length=6;index=6这是我收到的错误。无需我修复错误,谢谢!