1

我正在开发一个 android 应用程序,我必须在数据库中的自定义警报对话框中显示我的数据。这是我的数据库在此处输入图像描述

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

            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>

但它没有显示我数据库中的最后一个数据。在此处输入图像描述

正如您在我的屏幕截图中看到的,最后一个数据没有显示表单数据库。为什么芬达不显示?总是最后一行显示在数据库的警报对话框中。我无法理解的代码中的逻辑问题是什么?很可能这是我的逻辑错误,但我找不到它在哪里。我希望我能够向所有好心人解释我的问题。请帮我 。在此先感谢大家

4

2 回答 2

3

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

于 2013-10-23T05:52:55.013 回答
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
    }
于 2013-11-02T06:02:12.910 回答