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 -1movetoPositionメソッドにparamとして渡す理由を知りたいposition..あなたのアプローチによれば、最後の要素が読み取られることはないと思います!!

于 2013-10-23T05:52:55.013 に答える