带有片段的Android BaseAdapter

use*_*717 6 android android-listview baseadapter

无法编译此代码并运行.得到问题的lv.setAdapter(new VcAdapter (this)); 善意帮助.如果我尝试不通过(this),那么代码编译正常,但运行时会收到错误,说明内容需要listview.

import java.util.ArrayList;

import com.vaishnavismeclass.tiruppavai.tab.R;
import com.vaishnavismeclass.tiruppavai.tab.SingleRow;

import android.support.v4.app.Fragment;
import android.content.Context;
import android.content.res.Resources;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;

public class EnglishFragment extends Fragment {

    Context context = null;

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_english, container, false);

        ListView lv = (ListView) rootView.findViewById(R.id.list); 
        lv.setAdapter(new VcAdapter (this));

        return rootView;
    }
}

class SingleRow
{
    String pasuram;
    int img;

    SingleRow(String pasuram, int img)
    {
        this.pasuram=pasuram;
        this.img=img;
    }
}
class VcAdapter extends BaseAdapter
{
    ArrayList<SingleRow> list;
    Context context;
    VcAdapter(Context c)
    {
        context = c;
        list = new ArrayList<SingleRow>();
        //get resources using context
        Resources res=c.getResources();
        String[] pasuram_en = res.getStringArray(R.array.pasuram_en);
        //String[] pasuram_ta = res.getStringArray(R.array.pasurams_ta);
//      String[] pasuram_te = res.getStringArray(R.array.pasurams_te);
        int[] imgs = {R.drawable.p1,R.drawable.p1,R.drawable.p1,R.drawable.p1,R.drawable.p2,R.drawable.p3,R.drawable.p4,R.drawable.p5,R.drawable.p6,R.drawable.p7,R.drawable.p8,R.drawable.p9,R.drawable.p10,R.drawable.p11,R.drawable.p12,R.drawable.p13,R.drawable.p14,R.drawable.p15,R.drawable.p16,R.drawable.p17,R.drawable.p18,R.drawable.p19,R.drawable.p20,R.drawable.p21,R.drawable.p22,R.drawable.p23,R.drawable.p24,R.drawable.p25,R.drawable.p26,R.drawable.p27,R.drawable.p28,R.drawable.p29,R.drawable.p30,R.drawable.p1,R.drawable.p1};

        for (int i=0;i<pasuram_en.length;i++)
        {
            //list.add(new SingleRow(pasuram_en[i], imgs[i]));
            list.add(new SingleRow(pasuram_en[i], imgs[i]));
        }
    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return list.size();
    }

    @Override
    public Object getItem(int i) {
        // TODO Auto-generated method stub
        return list.get(i);
    }

    @Override
    public long getItemId(int i) {
        // TODO Auto-generated method stub
        return 0;
    }

    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {
        // TODO Auto-generated method stub
        LayoutInflater inflater=(LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View row = inflater.inflate(R.layout.single_row, viewGroup, false);

        TextView pasuram = (TextView) row.findViewById(R.id.textView1);
        ImageView img = (ImageView) row.findViewById(R.id.imageView1);

        SingleRow temp=list.get(i);
        pasuram.setText(temp.pasuram);
        img.setImageResource(temp.img);

        return row;
    }

}
Run Code Online (Sandbox Code Playgroud)

Rag*_*dan 5

更改

lv.setAdapter(new VcAdapter (this));
Run Code Online (Sandbox Code Playgroud)

lv.setAdapter(new VcAdapter(getActivity()));
Run Code Online (Sandbox Code Playgroud)

您需要传递活动上下文.

getActivity()

返回此片段当前与之关联的Activity.