代码之家  ›  专栏  ›  技术社区  ›  DJhon

我的数据库的最后一行总是不显示在alertdialog中

  •  1
  • DJhon  · 技术社区  · 12 年前

    我正在开发一个android应用程序,在那里我必须在数据库的自定义警报对话框上显示我的数据。这是我的数据库 enter image description here

    我正试图通过以下代码在警报对话框a上显示所有这些数据

                public View getView(int position, View convertView, ViewGroup parent) {
        Log.d(TAG, "Position " + position);
        int _id = 0;
        int type = getItemViewType(position);
        OrderViewHolder orderViewHolder = null;
        if (convertView == null) {
            orderViewHolder = new OrderViewHolder();
    
            switch (type) {
            case TYPE_STATUS:
    
                convertView = inflater.inflate(R.layout.category_header, null);
                orderViewHolder.setTvTitle((TextView) convertView
                        .findViewById(R.id.category));
    
                break;
    
            case TYPE_ITEM:
                convertView = inflater.inflate(R.layout.order_list_row, null);
                orderViewHolder.setTvTitle((TextView) convertView
                        .findViewById(R.id.orderTitle));
                orderViewHolder.setTvPrice((TextView) convertView
                        .findViewById(R.id.orderPrice));
                orderViewHolder.setIvDelete((ImageButton) convertView
                        .findViewById(R.id.deleteOrder));
                // orderViewHolder.setIvDelete((ImageButton)convertView.findViewById(R.id.deleteOrder).setLayoutParams(params))
                break;
            }
    
            convertView.setTag(orderViewHolder);
    
        } else {
            orderViewHolder = (OrderViewHolder) convertView.getTag();
        }
    
        if (position == 0) {
            if (starterCount != 0) {
                orderViewHolder.getTvTitle().setText("");
                // orderViewHolder.getTvTitle().setBackgroundDrawable(R.drawable.tab_starters_menu_on);
                orderViewHolder.getTvTitle().setTextColor(R.color.Black);
                orderViewHolder.getTvTitle().setTextSize(12);
                orderViewHolder.getTvTitle().setTypeface(Typeface.DEFAULT_BOLD);
              orderViewHolder.getTvTitle().setBackgroundResource(R.drawable.tt111);
                orderViewHolder.getTvTitle().setHeight(20); 
                orderViewHolder.getTvTitle().setWidth(100);
                /*
                 * RestaurantHome.setFontTextViewTahoma(OrderListAdapter,
                 * orderViewHolder.getTvTitle());
                 */
            }    
            else {    
                orderViewHolder.getTvTitle().setText(" ");
                orderViewHolder.getTvTitle().setBackgroundColor(Color.WHITE);   
            }
    
        }    
    
    
        if ((position !=0))
    
        {        
            System.out.println(" position vlue   : "+position);
            if (oStarterCursor.moveToPosition(position-1)) {
                String title = oStarterCursor.getString(oStarterCursor.getColumnIndex("item_name"));
                System.out.println( " value of title "+title);
                String price = oStarterCursor.getString(oStarterCursor.getColumnIndex("Item_cost"));  
                System.out.println( " value of price "+price);
    
                _id = oStarterCursor.getInt(oStarterCursor
                        .getColumnIndex("_id"));
                if (title != null) {
                    title = title.trim();  
                    orderViewHolder.getTvTitle().setText(title);   
                    orderViewHolder.getTvTitle().setTextColor(R.color.black);
                    orderViewHolder.getTvTitle().setTextSize(12);
                    orderViewHolder.getTvTitle().setTypeface(Typeface.DEFAULT);
                    orderViewHolder.getTvTitle().setGravity(Gravity.CENTER_VERTICAL);
                }
    
                if (price != null) {
                    price = price.trim();
                    orderViewHolder.getTvPrice().setText(price + ".00");
                    orderViewHolder.getTvTitle().setTextColor(R.color.black);
                    orderViewHolder.getTvTitle().setTextSize(12);
                    orderViewHolder.getTvTitle().setTypeface(Typeface.DEFAULT);
                    orderViewHolder.getTvTitle().setGravity(Gravity.CENTER_VERTICAL);    
    
    
                }
                _id = oStarterCursor.getInt(oStarterCursor.getColumnIndex("_id")); 
    
    
            }
    
    
                        convertView.setTag(R.id.orderTitle, _id);
            if (orderViewHolder.getIvDelete() != null) {
                orderViewHolder.getIvDelete().setTag(R.id.orderTitle, _id);
            }
            // _id =
            // oStarterCursor.getInt(oStarterCursor.getColumnIndex("_id"));
        }
    
        //}
    
        return convertView;}
    

    我将发布我的order_list_row.xml文件。

         <?xml version="1.0" encoding="utf-8"?>
       <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="100sp"
    android:layout_height="fill_parent"
    android:background="#fff" >
    
    <ImageButton
        android:id="@+id/deleteOrder"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:layout_marginRight="20dp"
        android:background="#fff"
        android:onClick="clickHandler"
        android:src="@drawable/icon_close" >
    </ImageButton>
    
    <TextView
        android:id="@+id/orderTitle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_margin="4sp"
        android:background="#fff"
        android:textColor="#000"
        android:textSize="16dp" >
    </TextView>
    
    <TextView
        android:id="@+id/orderPrice"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="4sp"
        android:layout_toLeftOf="@id/deleteOrder"
        android:layout_toRightOf="@id/orderTitle"
        android:background="#fff"
        android:textColor="#000"
        android:textSize="16dp" >
    </TextView>
    
    </RelativeLayout>
    

    但它并没有显示我数据库中的最后一个数据。 enter image description here

    正如你从我的屏幕截图中看到的,最后的数据并没有显示表单数据库。为什么fanta没有出现?总是最后一行显示在数据库的alertdialog中。我无法理解的代码中的逻辑问题是什么?很可能这是我的逻辑错误,但我找不到它在哪里。我希望我能向所有祝福我的人解释我的问题。请帮帮我。提前感谢所有人

    2 回复  |  直到 12 年前
        1
  •  3
  •   r4jiv007    12 年前

    我想知道你为什么路过 position -1 as param to movetoPosition方法 直接通过 position .. 我认为根据你的方法,最后一个元素永远不会被阅读!!

        2
  •  1
  •   DJhon    12 年前

    最后我解决了我的问题。感谢所有建议我解决这个问题的人。

       public int getCount() {
        // TODO Auto-generated method stub
        Log.d(TAG, "GetCount "+starterCount);
        return starterCount +1 ;
    }
    

       if ((position !=0)&& (position != starterCount + 1))    
    
        {     
              // TODO Auto-generated method stub
        }