2013-11-24 18 views
5

Không thể biên dịch mã này và chạy. gặp sự cố trong số lv.setAdapter(new VcAdapter (this)); vui lòng trợ giúp. Nếu tôi cố gắng không vượt qua (this), sau đó mã biên dịch tốt, nhưng thời gian chạy nhận được lỗi nêu rõ nội dung cần phải có listview.Android BaseAdapter với Fragment

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

} 

Trả lời

4

Thay đổi

lv.setAdapter(new VcAdapter (this)); 

để

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

Bạn cần phải vượt qua bối cảnh hoạt động.

getActivity()

Trả lại hoạt động mà đoạn này hiện được liên kết.

+0

Với lv.setAdapter (VcAdapter mới (getActivity())); mã được biên dịch và ứng dụng đang chạy, nhưng không điền vào listview. – user2612717

+0

@ user2612717 kiểm tra bộ chuyển đổi getview nó không có gì để làm với sự thay đổi đề nghị – Raghunandan

+0

pls bạn có thể đề nghị những gì sai với getView()? – user2612717

0

bạn cũng cần phải thay đổi điều này

@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; 
    } 
Các vấn đề liên quan