自定义电源适配器没有显示数据 [英] Custom Adapter Not showing data

查看:174
本文介绍了自定义电源适配器没有显示数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经开发了一个自定义的适配器,它需要数据的SQLite。数据选择和适配器还获取数据。但它没有显示在列表视图中。我没有得到任何错误。我印刷在适配器数据得到,但只有一组数据被示出。并非所有的数据。

我已经制定,并按照正常的自定义适配器实现的例子。

我有些怀疑。

1,在我customAdapter类。当我夸大XML的适配器定制行时findviewById()被调用只有一个文本视图显示它可能会产生空指针Exception'.Why?我的XML为列表视图行。

 < RelativeLayout的的xmlns:机器人=htt​​p://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的>
 

  1. 在我的片段类还上面的警告显示为充气列表视图元素。 我的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_horizo​​ntal
        机器人:背景=@色/ 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>

  1. 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.

这篇关于自定义电源适配器没有显示数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆