问题描述
我已经开发了一个自定义的适配器,它需要数据的SQLite。数据选择和适配器还获取数据。但它没有显示在列表视图中。我没有得到任何错误。我印刷在适配器数据得到,但只有一组数据被示出。并非所有的数据。
我已经制定,并按照正常的自定义适配器实现的例子。
我有些怀疑。
1,在我customAdapter类。当我夸大XML的适配器定制行时findviewById()被调用只有一个文本视图显示它可能会产生空指针Exception'.Why?我的XML为列表视图行。
< RelativeLayout的的xmlns:机器人=http://schemas.android.com/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="http://schemas.android.com/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.
这篇关于自定义电源适配器没有显示数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!