2013-11-24 9 views
5

このコードをコンパイルして実行することができません。お手数ですがlv.setAdapter(new VcAdapter (this)); で問題が発生しました。もし私が(this)を渡さないようにしようとすると、コードはコンパイルされますが、内容にはlistviewが必要です。フラグメントを含むAndroid BaseAdapter

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

} 

答えて

4

変更

lv.setAdapter(new VcAdapter (this)); 

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

にあなたはアクティビティコンテキストを渡す必要があります。

getActivity()

戻り、この断片が現在関連付けられているアクティビティ

+0

にこの

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

を変更する必要があります。コードはコンパイルされ、アプリケーションは実行されていますが、リストビューには表示されません。 – user2612717

+0

@ user2612717アダプターのgetviewを確認してください。変更点とは関係ありません。 – Raghunandan

+0

pls getView()で何が問題なのかを提案できますか? – user2612717

0

あなたもlv.setAdapter(新しいVcAdapter(getActivity()))で

@Override 
    public long getItemId(int i) { 
     // TODO Auto-generated method stub 
     return i; 
    } 
関連する問題