android-在使用Base适配器的Fragment中实现ListVIew,我做错了什么?

问题描述:

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

终于来了!能够显示列表视图在我的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

很高兴看到你解决了。快乐的编码! –