Android的BaseAdapter与片段 [英] Android BaseAdapter with Fragment

查看:116
本文介绍了Android的BaseAdapter与片段的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

无法编译这个code和运行。让问题 lv.setAdapter(新VcAdapter(本));
好心的帮助。如果我试图不通过(本),然后code编译罚款,但运行时收到错误陈述的内容需要有列表视图

 进口的java.util.ArrayList;进口com.vaishnavismeclass.tiruppavai.tab.R;
进口com.vaishnavismeclass.tiruppavai.tab.SingleRow;进口android.support.v4.app.Fragment;
进口android.content.Context;
进口android.content.res.Resources;
进口android.os.Bundle;
进口android.view.LayoutInflater;
进口android.view.View;
进口android.view.ViewGroup;
进口android.widget.BaseAdapter;
进口android.widget.ImageView;
进口android.widget.ListView;
进口android.widget.TextView;公共类EnglishFragment扩展片段{    上下文的背景下= NULL;    公共查看onCreateView(LayoutInflater充气器,容器的ViewGroup,捆绑savedInstanceState){
        查看rootView = inflater.inflate(R.layout.fragment_english,集装箱,FALSE);        LV的ListView =(ListView控件)rootView.findViewById(R.id.list);
        lv.setAdapter(新VcAdapter(本));        返回rootView;
    }
}类SingleRow
{
    串pasuram;
    INT IMG;    SingleRow(字符串pasuram,诠释IMG)
    {
        this.pasuram = pasuram;
        this.img = IMG;
    }
}
类VcAdapter扩展了BaseAdapter
{
    ArrayList的< SingleRow>清单;
    上下文语境;
    VcAdapter(上下文C)
    {
        上下文= C;
        名单=新的ArrayList< SingleRow>();
        //使用上下文获取资源
        资源解析度= 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;我++)
        {
            //list.add(new SingleRow(pasuram_en [I],IMGS [I]));
            list.add(新SingleRow(pasuram_en [I],IMGS [I]));
        }
    }    @覆盖
    公众诠释的getCount(){
        // TODO自动生成方法存根
        返回则为list.size();
    }    @覆盖
    公共对象的getItem(int i)以{
        // TODO自动生成方法存根
        返回list.get(ⅰ);
    }    @覆盖
    众长getItemId(int i)以{
        // TODO自动生成方法存根
        返回0;
    }    @覆盖
    公共查看getView(INT I,观景,ViewGroup中的ViewGroup){
        // TODO自动生成方法存根
        LayoutInflater吹气=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        查看排= 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);        返回行;
    }}


解决方案

修改

  lv.setAdapter(新VcAdapter(本));

  lv.setAdapter(新VcAdapter(getActivity()));

您需要传递活动的上下文。

getActivity()

返回此片段目前正与相关联的活动。

Unable to compile this code and run. getting issue in lv.setAdapter(new VcAdapter (this)); kindly help. If I try to not pass (this), then code compile fine, but run time getting error stating content need to have 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;
    }

}

解决方案

Change

lv.setAdapter(new VcAdapter (this));

to

lv.setAdapter(new VcAdapter(getActivity()));

You need to pass activity context.

getActivity()

Return the Activity this fragment is currently associated with.

这篇关于Android的BaseAdapter与片段的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆