2013-11-24 28 views
5

Bu kod derlenemiyor ve çalıştırılamıyor. lv.setAdapter(new VcAdapter (this)); numaralı telefondan sorun yaşanıyor. (this)'u geçmemeye çalışırsam, kod derleme işlemi tamamlanır, ancak içeriğin listview olması gerektiğini belirten bir hatayla karşılaşılması gerekir.Android BaseAdapter Fragmanı

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

} 

cevap

4

Değişim

lv.setAdapter(new VcAdapter (this)); 

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

için Sen aktivite bağlamı geçmeleri gerekiyor.

getActivity()

geri bu fragman ilişkilendirilmiş olduğu Etkinlik

.

+0

değiştirmeniz gerekir; Kod derlenmiş ve uygulama çalışıyor, ancak listeyi doldurmuyor. – user2612717

+0

@ user2612717 Bağdaştırıcıyı kontrol edin getview'in önerilen değişiklikle hiçbir ilgisi yoktur – Raghunandan

+0

pls getView() ile ilgili yanlış olanı önerebilir misiniz? – user2612717

0

de (yeni VcAdapter (getActivity())) lv.setAdapter ile bu

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

için

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