получить данные из Intent Activity и активировать кнопку в ListView - PullRequest
0 голосов
/ 02 декабря 2011

Привет, спасибо, что прочитали это!Пожалуйста, помогите мне.

Я пытаюсь создать приложение для ресторана, которое отображает 3 кнопки в меню, затем нажимает кнопку питания, в которой отображается список продуктов, затем клиент может выбрать продукт, который он хочет заказать, и отправитьвернуть заказ обратно на первую страницу.Я прочитал много статей, и некоторые говорят, что используют listview.setItemsCanFocus (true), но у меня возникли проблемы с пониманием, чтобы реализовать его.и некоторые говорят, что слушатель кнопки внутри getView, но когда я реализую свою программу, просто зависаю.Пожалуйста, помогите мне.Спасибо.

мое меню: enter image description here

вот моя страница еды (вторая) страница

enter image description here

У меня проблемы:

  1. для передачи данных обратно из класса food.class обратно в мой основной класс - restaurant.class

  2. После добавления кнопки всписок продуктов не кликабельны (весь ряд продуктов).

мой основной класс (ресторан)

public class SesameRestaurant extends Activity  {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

}


public void foodMenu(View v){
    startActivity(new Intent(SesameRestaurant.this,Food.class));

    //setContentView(R.layout.foods);
}

public void drinkMenu(View v){startActivity(new Intent(SesameRestaurant.this,Drink.class));}
public void billMenu(View v){}

}

мой второйкласс (food.class)

package com.restaurant.sesame;

 public class Food extends ListActivity {
private LayoutInflater mInflater;
private Vector<RowData> data;
RowData rd; 


static final String[] title = new String[] {
            "Cow Rib steak", 
            "Thai Prawn Fried Rice",    
            "Christmas Sensation Delight",
            "Salmon Steak"      };

static final String[] detail = new String[] {
                "1h 37m Shipping: $10.00",
                "1h 39m Shipping: Free",
                "58m 6s Shipping: $10.00",
                "59m 30s Shipping: $10.95"  };

private Integer [] imgid = { R.drawable.food1, R.drawable.food2, R.drawable.food3, R.drawable.food4 };


public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.foods);

    mInflater = (LayoutInflater) getSystemService(
            Activity.LAYOUT_INFLATER_SERVICE);
            data = new Vector<RowData>();
            for(int i=0;i<title.length;i++){
            try {
                rd = new RowData(i,title[i],detail[i]);
                } catch (ParseException e) {
                    e.printStackTrace();
               }
               data.add(rd);
            }
               CustomAdapter adapter = new CustomAdapter(this, R.layout.list, R.id.title, data);
               setListAdapter(adapter);
               getListView().setTextFilterEnabled(true);

}

 public void onListItemClick(ListView parent, View v, int position, long id) {          
     Log.w("my app", "Click list Item!!!"); 
     Toast.makeText(getApplicationContext(), "You have selected "+(position+1)+"th item",  Toast.LENGTH_SHORT).show();
 }

 public void orderClick(View v){


 }

 private class RowData {
        protected int mId;
        protected String mTitle;
        protected String mDetail;

     RowData(int id,String title,String detail)
     {
                mId=id;
                mTitle = title;
                mDetail=detail;
     }

     @Override
     public String toString() {
         return mId+" "+mTitle+" "+mDetail;
     }
 }

 private class CustomAdapter extends ArrayAdapter<RowData> {
     public CustomAdapter(Context context, int resource, int textViewResourceId, List<RowData> objects) {               
         super(context, resource, textViewResourceId, objects);
     }

     @Override
     public View getView(int position, View convertView, ViewGroup parent) {   
         ViewHolder holder = null;
         TextView title = null;
         TextView detail = null;
         ImageView i11=null;
         RowData rowData= getItem(position);
         if(null == convertView){
                convertView = mInflater.inflate(R.layout.list, null);
                holder = new ViewHolder(convertView);
                convertView.setTag(holder);
         }
         holder = (ViewHolder) convertView.getTag();
         title = holder.gettitle();
         title.setText(rowData.mTitle);
         detail = holder.getdetail();
         detail.setText(rowData.mDetail);                                                     
         i11=holder.getImage();
         i11.setImageResource(imgid[rowData.mId]);


         return convertView;
     }

     private class ViewHolder {
         private View mRow;
         private TextView title = null;
         private TextView detail = null;
         private ImageView i11=null; 
         public ViewHolder(View row) {
             mRow = row;
         }

         public TextView gettitle() {
             if(null == title){
                 title = (TextView) mRow.findViewById(R.id.title);
             }
             return title;
         }     

         public TextView getdetail() {
             if(null == detail){
                 detail = (TextView) mRow.findViewById(R.id.detail);
             }
             return detail;
         }
         public ImageView getImage() {
             if(null == i11){
                 i11 = (ImageView) mRow.findViewById(R.id.img);
             }
             return i11;
         }
     }
 }


 public void backClick(View v){
    finish(); 
 }

}

мой интерфейс меню еды foods.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
>
<ListView
    android:id="@android:id/list"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
/>

<Button  
        android:layout_height="wrap_content"  
        android:text="Back"  
        android:onClick="backClick"  
        android:layout_width="fill_parent">  
</Button> 

my list.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:orientation="horizontal"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content">
    <ImageView  android:id="@+id/img"
                android:scaleType="centerCrop"
                android:layout_width="100dp"
                android:layout_height="100dp"/>
    <LinearLayout   xmlns:android="http://schemas.android.com/apk/res/android"
                    android:orientation="vertical"
                    android:paddingLeft="10dp"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content">
        <TextView
            android:layout_width="fill_parent"
            android:id="@+id/title"
            android:layout_height="wrap_content"
            android:textStyle="bold"
            android:textColor="#ffffff"
            android:textSize="16sp" />
        <TextView
            android:layout_width="fill_parent"
            android:id="@+id/detail"
            android:textColor="#ffffff"
            android:layout_height="wrap_content"/>

        <RelativeLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal" >

            <TextView
                android:id="@+id/quantity"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Quantity :"
                android:textColor="#ffffff" />

            <EditText
                android:id="@+id/quantityInput"
                android:layout_width="wrap_content"
                android:layout_height="35dp"
                android:layout_toRightOf="@id/quantity"
                android:hint="1-10"
                android:paddingLeft="10dp"
                android:textSize="12dp" />

            <Button
                android:id="@+id/order"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="120dp"
                android:layout_toRightOf="@id/quantity"
                android:onClick="orderClick"
                android:text="Order"
                android:textSize="12dp" />

        </RelativeLayout>
    </LinearLayout>

1 Ответ

1 голос
/ 02 декабря 2011

Я сейчас в школе, поэтому у меня совсем нет времени, чтобы получить фрагмент кода, но вам нужно будет использовать startActivityForResult () вместо startActivity (). Это позволит вам отправлять информацию обратно в основное приложение после завершения действия с едой.

Ответьте, если вам нужно, чтобы я нашел фрагмент для вас, и я напишу его быстро, как только вернусь домой примерно через час.

...