2017-10-17 48 views
0

問題Sloverd,我試圖實現在片段列表視圖而不implenting listfragmentandroid-在使用Base適配器的Fragment中實現ListVIew,我做錯了什麼?

(只是延伸片段)

和定製適配器而不延伸任何ArrayAdapter或ListAdapter ..

(只是擴展BaseAdapter)

我的下面的代碼顯示沒有錯誤,但listview沒有顯示在片段中。我正在使用自定義適配器來一起顯示兩個edittext。在調試期間,我可以看到適配器在視圖中發送列表,但listview.setadapter()沒有綁定任何數據任何人都可以告訴我我做錯了什麼?我試圖在這裏找到類似的解決方案,但沒有運氣。我會非常感謝任何反饋或指向類似的問題。 片段:

import android.app.Fragment; 
    import android.os.Bundle; 
    import android.view.LayoutInflater; 
    import android.view.View; 
    import android.view.ViewGroup; 
    import android.widget.ListView; 
    import android.widget.TextView;  
    import java.util.ArrayList; 


    public class ResultFragment extends Fragment { 
     private DBHelper dbHelper=null; 
     ArrayList<MedicineModel> medicineModelList=new ArrayList<MedicineModel>(); 
     String selectedData=""; 
     CustomAdapterBrandResult adapter; 
     ListView listView; 

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

      View view= inflater.inflate(R.layout.fragment_result, container, false); 

      listView= (ListView) view.findViewById(R.id.resultList); 
      TextView textView=(TextView)view.findViewById(R.id.selected_text); 

      Bundle bundle=getArguments(); 
      if(bundle!=null){ 
       textView.setText(bundle.getString("selected_data")); 
       selectedData=(bundle.getString("selected_data")); 
      } 

      dbHelper=new DBHelper(this.getActivity()); 
      medicineModelList= dbHelper.getAllUsingBrandName(selectedData); 

      adapter=new CustomAdapterBrandResult(getActivity(), medicineModelList); 
      listView.setAdapter(adapter); 
      return view; 
     } 

    } 

定義適配器

import android.content.Context; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseAdapter; 
import android.widget.TextView; 
import java.util.ArrayList; 

public class CustomAdapterBrandResult extends BaseAdapter { 
    private Context mcontext; 
    private ArrayList<MedicineModel> medicineModelList; 
    public CustomAdapterBrandResult(Context mcontext, ArrayList<MedicineModel> medicineModelList) { 
     this.mcontext = mcontext; 
     this.medicineModelList = medicineModelList; 
    } 
    @Override 
    public int getCount() { 
     return medicineModelList.size(); 
    } 
    @Override 
    public Object getItem(int position) { 
     return medicineModelList.get(position); 
    } 
    @Override 
    public long getItemId(int position) { 
     return position; 
    } 
    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     View view=View.inflate(mcontext,R.layout.custom_layout_brand_result,null); 

     final TextView textViewBrand=(TextView)view.findViewById(R.id.textView2BrandName); 
     final TextView textViewManufacture=(TextView)view.findViewById(R.id.textView3Manufacture); 

     textViewBrand.setText(medicineModelList.get(position).getBrandName()); 
     textViewManufacture.setText(medicineModelList.get(position).getNameoftheManufacturer()); 
     return view; 
    } 
} 

回答

1

終於來了!能夠顯示列表視圖在我的fragment.Added重寫onCreate方法和初始化列表和adpater那裏和在重寫onCreateView方法只需在列表視圖上設置適配器,也就是說,..工作每perfectly罰款。多虧了你們,

@IntelliJAmiya和
@Mikerizzo
對我的問題誰發表評論,並花時間研究它

下面是最終的解決方案:片段

public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     Bundle bundle=getArguments(); 
     if(bundle!=null){ 

      selectedData=(bundle.getString("selected_data")); 
     } 

     dbHelper=new DBHelper(this.getActivity()); 
     medicineModelList= dbHelper.getAllUsingBrandName(selectedData); 
     adapter=new CustomAdapterBrandResult(getActivity(), medicineModelList); 


    } 

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

     View view= inflater.inflate(R.layout.fragment_result, container, false); 


     listView= (ListView) view.findViewById(R.id.resultList); 
     TextView textView=(TextView)view.findViewById(R.id.selected_text); 
     textView.setText(selectedData); 
     adapter.notifyDataSetChanged(); 
     listView.setAdapter(adapter); 


//  int a = listView.getAdapter().getCount(); 



     return view; 
    } 
+0

@ Mikerizzo最終解決了它,但仍然不知道爲什麼我必須將它們分開。反正謝謝bro –

+1

@IntelliJA感謝你的時間,真正感謝它:)並看到解決方案,你是對的,馬虎的錯誤...哈哈 –

+0

很高興看到你解決了。快樂的編碼! –