Android的BaseAdapter与片段 [英] Android BaseAdapter with Fragment
本文介绍了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屋!
查看全文