2013-11-24 15 views
5

के साथ एंड्रॉइड बेस एडाप्टर इस कोड को संकलित करने और चलाने में असमर्थ। 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; 
    } 

} 

उत्तर

4

बदलें

lv.setAdapter(new VcAdapter (this)); 

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

आप गतिविधि संदर्भ पारित करने के लिए की जरूरत है।

getActivity()

वापसी गतिविधि इस टुकड़ा वर्तमान में संबद्ध है।

+0

बदलने के लिए lv.setAdapter के साथ (नई VcAdapter (getActivity())) की जरूरत है; कोड संकलित किया गया है और ऐप चल रहा है, लेकिन सूचीदृश्य पॉप्युलेट नहीं कर रहा है। – user2612717

+0

@ user2612717 एडाप्टर गेटव्यू की जांच करें, इसमें बदलाव के साथ कुछ भी नहीं है – Raghunandan

+0

pls क्या आप सुझाव दे सकते हैं कि getView() के साथ क्या गलत है? – user2612717

0

आप भी इस

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

को

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