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

时间:2013-10-23 05:47:45

标签: android baseadapter

我正在开发一个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

正如您在屏幕截图中看到的,最后一个数据未显示表单数据库。为什么芬达不露面?始终最后一行显示在来自数据库的alertdialog中。我的代码中的逻辑问题是什么,我无法理解?最有可能是我的逻辑错误,但我无法找到。我希望我能够向所有善良的人解释我的问题。请帮我 。在此先感谢所有

2 个答案:

答案 0 :(得分:3)

我想知道你为什么将position -1作为param传递给movetoPosition方法 只是通过position .. 我认为根据你的方法,最后一个元素永远不会被阅读!!

答案 1 :(得分:1)

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

   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
    }