我已经开发了一个自定义的适配器,它需要数据的SQLite。数据选择和适配器还获取数据。但它没有显示在列表视图中。我没有得到任何错误。我印刷在适配器数据得到,但只有一组数据被示出。并非所有的数据。
我已经制定,并按照正常的自定义适配器实现的例子。
我有些怀疑。
1,在我customAdapter类。当我夸大XML的适配器定制行时findviewById()被调用只有一个文本视图显示它可能会产生空指针Exception'.Why?我的XML为列表视图行。
< RelativeLayout的的xmlns:机器人=http://schemas.android/apk/res/android 机器人:方向=垂直 机器人:paddingTop =4dip 机器人:paddingBottom会=6dip 机器人:以下属性来=10dip 机器人:paddingRight =10dip 机器人:layout_width =FILL_PARENT 机器人:layout_height =FILL_PARENT 机器人:weightSum =1> <的TextView 机器人:layout_width =WRAP_CONTENT 机器人:layout_height =WRAP_CONTENT 机器人:ID =@ + ID / row_item_name 机器人:文字颜色=@色/ item_name_color 机器人:layout_alignParentLeft =真 /> <的TextView 机器人:layout_width =WRAP_CONTENT 机器人:layout_height =WRAP_CONTENT 机器人:ID =@ + ID / row_item_price 机器人:文字颜色=@色/ item_price_color 机器人:layout_alignParentTop =真 机器人:layout_alignParentRight =真 机器人:layout_alignParentEnd =真/> <的TextView 机器人:layout_width =WRAP_CONTENT 机器人:layout_height =WRAP_CONTENT 机器人:ID =@ + ID / row_item_contains 机器人:layout_gravity =左 机器人:layout_below =@ ID / row_item_name 机器人:layout_toRightOf =@ ID / row_item_name/> <的TextView 机器人:layout_width =WRAP_CONTENT 机器人:layout_height =WRAP_CONTENT 机器人:ID =@ + ID / row_item_quantity 机器人:layout_above =@ ID / row_item_contains 机器人:paddingRight =10dip 机器人:layout_toLeftOf =@ ID / row_item_price/> < / RelativeLayout的>
在我的片段类还上面的警告显示为充气列表视图元素。 我的XML片段给出如下:
<的TextView 机器人:ID =@ + ID / tableTextview 机器人:layout_width =WRAP_CONTENT 机器人:layout_height =WRAP_CONTENT 机器人:layout_gravity =左 机器人:文本=@字符串/表 机器人:layout_alignParentTop =真 机器人:layout_alignParentLeft =真 机器人:layout_alignParentStart =真/> <的TextView 机器人:ID =@ + ID /用户名 机器人:layout_width =WRAP_CONTENT 机器人:layout_height =WRAP_CONTENT 机器人:layout_alignParentEnd =真 机器人:layout_alignParentRight =真 机器人:layout_gravity =右 机器人:文字颜色=@色/ BG/> <的EditText 机器人:paddingTop =6DP 机器人:ID =@ + ID / tableNumber 机器人:layout_width =WRAP_CONTENT 机器人:layout_height =WRAP_CONTENT 机器人:inputType =数字 机器人:=了maxWidth@扪/ tableNoSize 机器人:layout_below =@ ID / tableTextview 机器人:layout_alignRight =@ ID / tableTextview 机器人:layout_alignEnd =@ ID / tableTextview/> <的TextView 机器人:ID =@ + ID / TextView的 机器人:layout_width =WRAP_CONTENT 机器人:layout_height =WRAP_CONTENT 机器人:layout_alignLeft =@ ID / tableNumber 机器人:layout_alignStart =@ ID / tableNumber 机器人:layout_below =@ ID / tableNumber 机器人:layout_gravity =中心 机器人:paddingTop =6dip 机器人:paddingBottom会=4dip 机器人:文本=@字符串/菜单/> <的ListView 机器人:layout_below =@ ID / TextView的 机器人:ID =@ + ID / bearer_menu_order_list 机器人:layout_width =WRAP_CONTENT 机器人:layout_height =0dp> < / ListView控件> <按钮 机器人:ID =@ + ID / placeButton 机器人:layout_width =WRAP_CONTENT 机器人:layout_height =WRAP_CONTENT 机器人:layout_below =@ ID / TextView的 机器人:layout_gravity =center_horizontal 机器人:背景=@色/ buttonColor 机器人:文本=@字符串/ placeOrder在/>
我的适配器code
公共类MenuListAdapter扩展了BaseAdapter { 私人列表< MenuData>清单; 私人上下文的背景下; 公共MenuListAdapter(上下文的背景下,名单,其中,MenuData>列表){ this.context =背景; this.list =清单; Log.e(熙,则为list.size()+); } @覆盖 公众诠释getCount将(){ 返回则为list.size(); } @覆盖 公共对象的getItem(INT位置){ 返回list.get(位置); } @覆盖 众长getItemId(INT位置){ 返回的位置; } @覆盖 公共查看getView(INT位置,查看convertView,ViewGroup中父){ //Log.e("list得了 - ,+则为list.size()); Log.e(位置,+位置); ViewHolder持有人; LayoutInflater充气=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 如果(convertView == NULL){ convertView = inflater.inflate(R.layout.row_list_create_new,NULL); 持有人=新ViewHolder(); 尝试{ holder.txtName =(TextView中)convertView.findViewById(R.id.row_item_name); holder.txtContains =(TextView中)convertView.findViewById(R.id.row_item_contains); holder.txtPrice =(TextView中)convertView.findViewById(R.id.row_item_price); holder.txtQuantity =(TextView中)convertView.findViewById(R.id.row_item_quantity); convertView.setTag(保持器); Log.e(covertView - ,空); } 赶上(NullPointerException异常E){ e.printStackTrace(); } } 其他 { Log.e(covertView - ,非空); 支架=(ViewHolder)convertView.getTag(); } MenuData currentRow = list.get(位置); Log.e(项目,currentRow.getKEY_ITEM_NAME()); holder.txtName.setText(currentRow.getKEY_ITEM_NAME()); holder.txtContains.setText(currentRow.getKEY_ITEM_CONTENTS()); holder.txtPrice.setText(currentRow.getKEY_PRICE()); 返回convertView; } 类ViewHolder { 公众的TextView txtName的; 公众的TextView txtPrice; 公众的TextView txtContains; 公众的TextView txtQuantity; } }
片段code是
公共类CreateOrderFragment扩展片段{ 名单< MenuData> listMenu; @覆盖 公共查看onCreateView(LayoutInflater充气,容器的ViewGroup, 捆绑savedInstanceState){ 查看rootView; listMenu =新的ArrayList< MenuData>(); rootView = inflater.inflate(R.layout.fragment_create_new_order_list_sections,集装箱,假); 上下文的背景下= getActivity(); //视图中查看= getView(); ListView的菜单列表; 菜单列表=(ListView控件)rootView.findViewById(R.id.bearer_menu_order_list); menuList.setVisibility(View.VISIBLE); DatabaseHelper帮手=新DatabaseHelper(上下文); listMenu = helper.getMenuItem(); Log.e(列表菜单 - ,listMenu.size()+); MenuListAdapter适配器=新MenuListAdapter(背景下,listMenu); Log.e(名单适配器 - ,+ adapter.getCount()); menuList.setAdapter(适配器); menuList.setVisibility(View.VISIBLE); 返回rootView; } @覆盖 公共无效的onCreate(包savedInstanceState){ super.onCreate(savedInstanceState); 字符串的用户; TextView的电视; } }解决方案
您可以简单的实现onCreateView()的片段。
的ListView的菜单列表; @覆盖 公共查看onCreateView(LayoutInflater充气, ViewGroup中的容器,包savedInstanceState){ //充气的布局该片段 查看rootView; rootView = inflater.inflate(R.layout.fragment_create_new_order_list_sections,集装箱,假); 菜单列表=(ListView控件)rootView.findViewById(R.id.bearer_menu_order_list); DatabaseHelper帮手=新DatabaseHelper(getActivity()); listMenu = helper.getMenuItem(); Log.e(列表菜单 - ,listMenu.size()+); MenuListAdapter适配器=新MenuListAdapter(getActivity(),listMenu); Log.e(名单适配器 - ,+ adapter.getCount()); menuList.setAdapter(适配器); menuList.setVisibility(View.VISIBLE); 返回rootView; }
而在你的适配器类的改变,也
公共类MenuListAdapter扩展了BaseAdapter { 私人列表< MenuData>清单; 私人上下文的背景下; 公共MenuListAdapter(上下文的背景下,名单,其中,MenuData>列表){ this.context =背景; this.list =清单; Log.e(熙,则为list.size()+); }
从onActivityCreated()方法,删除所有的code
I have developed an custom adapter which takes data from SQLite. Data is selecting and adapter also gets data. But its not showing in the list view. I don't get any errors. I printed data get in the adapter but only one set of data is shown. Not all data.
I have developed and follow normal custom adapter implementation example.
I have some doubts.
1-In my customAdapter class. when i am inflating XML for the custom rows in adapter when findviewById() is called only one Text View shows 'it may produce null pointer Exception'.Why ? my xml for list view row.
<RelativeLayout xmlns:android="schemas.android/apk/res/android" android:orientation="vertical" android:paddingTop="4dip" android:paddingBottom="6dip" android:paddingLeft="10dip" android:paddingRight="10dip" android:layout_width="fill_parent" android:layout_height="fill_parent" android:weightSum="1"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/row_item_name" android:textColor="@color/item_name_color" android:layout_alignParentLeft="true" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/row_item_price" android:textColor="@color/item_price_color" android:layout_alignParentTop="true" android:layout_alignParentRight="true" android:layout_alignParentEnd="true" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/row_item_contains" android:layout_gravity="left" android:layout_below="@id/row_item_name" android:layout_toRightOf="@id/row_item_name" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/row_item_quantity" android:layout_above="@id/row_item_contains" android:paddingRight="10dip" android:layout_toLeftOf="@id/row_item_price" /> </RelativeLayout>
In my fragment class also above warning shows for inflated list view element. my fragments xml is given below.
<TextView android:id="@+id/tableTextview" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="left" android:text="@string/table" android:layout_alignParentTop="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" /> <TextView android:id="@+id/userName" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentEnd="true" android:layout_alignParentRight="true" android:layout_gravity="right" android:textColor="@color/bg" /> <EditText android:paddingTop="6dp" android:id="@+id/tableNumber" android:layout_width="wrap_content" android:layout_height="wrap_content" android:inputType="number" android:maxWidth="@dimen/tableNoSize" android:layout_below="@id/tableTextview" android:layout_alignRight="@id/tableTextview" android:layout_alignEnd="@id/tableTextview" /> <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@id/tableNumber" android:layout_alignStart="@id/tableNumber" android:layout_below="@id/tableNumber" android:layout_gravity="center" android:paddingTop="6dip" android:paddingBottom="4dip" android:text="@string/Menu" /> <ListView android:layout_below="@id/textView" android:id="@+id/bearer_menu_order_list" android:layout_width="wrap_content" android:layout_height="0dp"> </ListView> <Button android:id="@+id/placeButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/textView" android:layout_gravity="center_horizontal" android:background="@color/buttonColor" android:text="@string/placeOrder" />my Adapter code
public class MenuListAdapter extends BaseAdapter { private List<MenuData> list; private Context context; public MenuListAdapter(Context context, List<MenuData> list) { this.context = context; this.list = list; Log.e("Hee",list.size()+""); } @Override public int getCount() { return list.size(); } @Override public Object getItem(int position) { return list.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { //Log.e("list got--",""+list.size()); Log.e("position ",""+position); ViewHolder holder; LayoutInflater inflater =(LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); if (convertView == null){ convertView = inflater.inflate(R.layout.row_list_create_new,null); holder = new ViewHolder(); try{ holder.txtName=(TextView)convertView.findViewById(R.id.row_item_name); holder.txtContains=(TextView)convertView.findViewById(R.id.row_item_contains); holder.txtPrice=(TextView)convertView.findViewById(R.id.row_item_price); holder.txtQuantity=(TextView)convertView.findViewById(R.id.row_item_quantity); convertView.setTag(holder); Log.e("covertView-","Null"); } catch (NullPointerException e){ e.printStackTrace(); } } else { Log.e("covertView-","Not Null"); holder = (ViewHolder) convertView.getTag(); } MenuData currentRow=list.get(position); Log.e("item ",currentRow.getKEY_ITEM_NAME()); holder.txtName.setText(currentRow.getKEY_ITEM_NAME()); holder.txtContains.setText(currentRow.getKEY_ITEM_CONTENTS()); holder.txtPrice.setText(currentRow.getKEY_PRICE()); return convertView; } class ViewHolder { public TextView txtName; public TextView txtPrice; public TextView txtContains; public TextView txtQuantity; } }fragment code is
public class CreateOrderFragment extends Fragment { List<MenuData> listMenu; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView; listMenu=new ArrayList<MenuData>(); rootView = inflater.inflate(R.layout.fragment_create_new_order_list_sections, container, false); Context context=getActivity(); //View view=getView(); ListView menuList; menuList=(ListView) rootView.findViewById(R.id.bearer_menu_order_list); menuList.setVisibility(View.VISIBLE); DatabaseHelper helper=new DatabaseHelper(context); listMenu = helper.getMenuItem(); Log.e("list menu--",listMenu.size()+""); MenuListAdapter adapter=new MenuListAdapter(context,listMenu); Log.e("list adapter--",""+adapter.getCount()); menuList.setAdapter(adapter); menuList.setVisibility(View.VISIBLE); return rootView; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); String user; TextView tv; } }解决方案
You can simple implement onCreateView() for Fragment.
ListView menuList; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment View rootView; rootView = inflater.inflate(R.layout.fragment_create_new_order_list_sections, container, false); menuList=(ListView) rootView.findViewById(R.id.bearer_menu_order_list); DatabaseHelper helper=new DatabaseHelper(getActivity()); listMenu = helper.getMenuItem(); Log.e("list menu--",listMenu.size()+""); MenuListAdapter adapter=new MenuListAdapter(getActivity(),listMenu); Log.e("list adapter--",""+adapter.getCount()); menuList.setAdapter(adapter); menuList.setVisibility(View.VISIBLE); return rootView; }And in your Adapter class change here also
public class MenuListAdapter extends BaseAdapter { private List<MenuData> list; private Context context; public MenuListAdapter(Context context, List<MenuData> list) { this.context = context; this.list = list; Log.e("Hee",list.size()+""); }Remove all the code from onActivityCreated() method.
更多推荐
自定义电源适配器没有显示数据
发布评论