2015-05-20 2 views
1

Этот код работает правильно в Activity, меняю все Context с с getActivity()Android Фрагмент BaseAdapter не работает

но когда скопировать его в Fragment после adapter=new ListViewAdapter(getActivity(), arraylist); получает ошибку Когда mylist.setAdapter(adapter) запущена,, моя ошибка для класса ListViewAdapter Как к разрешить это?

Фрагмент

public class Fragment1 extends Fragment { 

DataBaseHelper myDbHelper; 

ListView mylist; 
ArrayList<String> iran,arr_intityid,arrshomare,primarykeyarrlist; 
String[] fa,mysid,myshomare,primarykeyarr; 
SQLiteDatabase db; 
Cursor mCursor; 
int translate; 
EditText mysearch; 
int [] favorit; 
ArrayList<Integer> favor; 
ListViewAdapter adapter; 


@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
    Bundle savedInstanceState) { 

    View myview = inflater.inflate(R.layout.search_fragment, container, false); 

    mylist=(ListView) myview.findViewById(R.id.mylist); 

    return myview; 

} 

@Override 
public void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    myDbHelper = new DataBaseHelper(getActivity().getApplicationContext()); 
    myDbHelper = new DataBaseHelper(getActivity()); 
    iran=new ArrayList<String>(); 
    arr_intityid=new ArrayList<String>(); 
    arrshomare=new ArrayList<String>(); 
    primarykeyarrlist=new ArrayList<String>(); 
    favor=new ArrayList<Integer>(); 

    try { 

     myDbHelper.createDataBase(); 

    }     

    catch (IOException ioe) { 
     throw new Error("Unable to create database"); 
      } 

    try { 
          myDbHelper.openDataBase(); 

    }  


    catch (SQLException sqle) { 

     sqle.printStackTrace(); 

    } 


    ArrayList<myitems> arraylist = new ArrayList<myitems>(); 
    db = myDbHelper.getReadableDatabase(); 

    mCursor= db.rawQuery("SELECT field_translation_id_value,title,translate,my_id,favorites FROM khotbe" 
      + " WHERE translate =1 ORDER BY field_translation_id_value ASC ;",null); 

    int i = 1; 

    mCursor.moveToFirst(); 

    while (mCursor.isAfterLast() == false) { 


     iran.add(mCursor.getString(1)); 
     arr_intityid.add(mCursor.getString(0)); 
     primarykeyarrlist.add(mCursor.getString(3)); 
     favor.add(mCursor.getInt(4)); 
     arrshomare.add(""+i++); 
     mCursor.moveToNext(); 

} 

    fa= new String [iran.size()]; 
    fa=iran.toArray(fa); 
     mysid= new String [arr_intityid.size()];       
     mysid=arr_intityid.toArray(mysid); 
     primarykeyarr= new String [primarykeyarrlist.size()];      
     primarykeyarr=primarykeyarrlist.toArray(primarykeyarr); 
     myshomare=new String[arrshomare.size()]; 
     myshomare=arrshomare.toArray(myshomare); 

     favorit =new int[favor.size()]; 
     for (int t= 0; t < favor.size(); t++) { 

     favorit[t]=favor.get(t).intValue(); 

    } 

     mCursor.moveToPosition(0); 

     for (int j = 0; j < fa.length; j++) { 


     myitems qqq= new myitems(fa[j],mysid[j],myshomare[j],primarykeyarr[j],favorit[j]); 

      arraylist.add(qqq); 

     } 

     Log.i("sssssss",getActivity()+""); 

     adapter=new ListViewAdapter(getActivity(), arraylist); 
     Log.i("sssssss", "2222222222222"); 

     mylist.setAdapter(adapter); 


} 

класс ListViewAdapter

public class ListViewAdapter extends BaseAdapter { 

     LayoutInflater inflater; 
     private List<myitems> worldpopulationlist = null; 
     private ArrayList<myitems> arraylist; 
     int myfavorit =0; 


     public ListViewAdapter(Context context, List<myitems> worldpopulationlist) { 
     // mContext = context; 
      this.worldpopulationlist = worldpopulationlist; 

      inflater = LayoutInflater.from(getActivity()); 

      this.arraylist = new ArrayList<myitems>(); 
      this.arraylist.addAll(worldpopulationlist); 
     } 

     public class ViewHolder { 
      TextView rank; 
      TextView country; 
      TextView population; 
      Button btn; 

     } 

     @Override 
     public int getCount() { 
      return worldpopulationlist.size(); 
     } 

     @Override 
     public myitems getItem(int position) { 
      return worldpopulationlist.get(position); 
     } 

     @Override 
     public long getItemId(int position) { 
      return position; 
     } 

     public View getView(final int position, View view, ViewGroup parent) { 
      final ViewHolder holder; 
      if (view == null) { 
       holder = new ViewHolder(); 


       view = inflater.inflate(R.layout.myitems_list, null); 

       holder.rank = (TextView) view.findViewById(R.id.txt25); 
       holder.btn=(Button) view.findViewById(R.id.btnfavor); 

       holder.country = (TextView) view.findViewById(R.id.txt26); 

       view.setTag(holder); 
      } else { 
       holder = (ViewHolder) view.getTag(); 
      } 


      holder.rank.setText(worldpopulationlist.get(position).gettitle()); 

      holder.country.setText(worldpopulationlist.get(position).getshomare()+"-"); 


      if(myfavorit==0){ 
       holder.btn.setBackgroundResource(R.drawable.ic_launcher); 

      } 

      else{ 
       holder.btn.setBackgroundResource(R.drawable.star); 

      } 


      return view; 

     } 
     } 
+0

Если вы только начинаете андроида, я хотел бы предложить, что вы используете 'Recyclerview'. –

ответ

Смежные вопросы