2011-12-02 27 views
0

感谢您阅读本文!请帮帮我。从Intent Activity获取数据并在ListView中激活按钮

我想创建一个餐厅应用程序,在菜单中显示3个按钮,然后单击显示食物列表的食物按钮,然后客户可以选择他们想要订购的食物,然后将订单发送回第一个页。我读了很多文章,有人说使用listview.setItemsCanFocus(true),但我有问题要理解它来实现它。有人说getView里面的按钮监听器,但是当我实现我的程序时只是挂起。请帮帮我。谢谢。

我的菜单: enter image description here

这里是我的菜(第二)页面

enter image description here

我有问题:

  1. 将数据从食物传送回.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(); 
} 

}

我的食物菜单界面的食物.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> 

我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

我在学校,所以我现在没有时间去一个你在所有的代码片段,但你将需要使用startActivityForResult()而不仅仅是startActivity()。这将允许您在完成您的食物活动后将信息发送回您的主应用程序。

如果您需要我为您找到一个片段,我会在一个小时后回家后写一个快速回复。

+0

我将不胜感激代码片段。谢谢。我实际上使用startActivity作为测试,并将其替换为startActivityForResult()。谢谢! –

+0

任何人?请帮助我...>< –

+0

嘿,我没有在stackoverflow了一下,完全忘了这篇文章对不起:/。如果你仍然需要这个,试试这个链接http://stackoverflow.com/questions/2694947/passing-data-from-new-activity-to-old-activity –