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;
}
@ Mikerizzo最终解决了它,但仍然不知道为什么我必须将它们分开。反正谢谢bro –
@IntelliJA感谢你的时间,真正感谢它:)并看到解决方案,你是对的,马虎的错误...哈哈 –
很高兴看到你解决了。快乐的编码! –