2013-06-27 50 views
0

我在同一個佈局上使用複選框和提交按鈕進行列表視圖。在下一個活動的複選框上顯示選定項目

現在我只能點擊複選框,它什麼也不做。我閱讀了很多關於展示商品的教程,但其中大部分都是作爲敬酒信息出現的。 我想要的是當我單擊提交按鈕時,項目將顯示在新活動中。

這是CheckBoxListAdapter的代碼:

public class CheckboxListAdapter extends BaseAdapter implements OnClickListener { 

private LayoutInflater inflator; 

private List<SampleData> dataList; 

public CheckboxListAdapter(LayoutInflater inflator) { 
    super(); 
    this.inflator = inflator; 

    dataList = new ArrayList<SampleData>(); 

    dataList.add(new SampleData("Teh Ais (130 cal)", false)); 
    dataList.add(new SampleData("Teh O Ais (130 cal)", false)); 
    dataList.add(new SampleData("Neslo Ais (170 cal)", false)); 
    dataList.add(new SampleData("Kopi Ais (130 cal)", false)); 
    dataList.add(new SampleData("Kopi O Ais (130 cal)", false)); 
    dataList.add(new SampleData("Jus buah (130 cal)", false)); 
    dataList.add(new SampleData("Limau ais (40 cal)", false)); 
    dataList.add(new SampleData("Air berkarbonat (120 cal)", false)); 

} 

@Override 
public int getCount() { 
    return dataList.size(); 
} 

@Override 
public Object getItem(int position) { 
    return dataList.get(position); 
} 

@Override 
public long getItemId(int position) { 
    return position; 
} 

@Override 
public View getView(int position, View view, ViewGroup viewGroup) { 

    if (view == null) { 
     view = inflator.inflate(R.layout.element_example, null); 

     view.findViewById(R.id.checkBox1).setOnClickListener(this); 
    } 

    SampleData data = (SampleData) getItem(position); 

    CheckBox cb = (CheckBox) view.findViewById(R.id.checkBox1); 
    cb.setChecked(data.isSelected()); 
    cb.setTag(data); 

    TextView tv = (TextView) view.findViewById(R.id.textView1); 
    tv.setText(data.getName()); 

    return view; 
} 

@Override 
public void onClick(View view) { 
    SampleData data = (SampleData) view.getTag(); 
    data.setSelected(((CheckBox) view).isChecked()); 
} 

} 

CheckboxListActivity的代碼:

public class CheckboxListActivity extends ListActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.activity_checkbox); 

    CheckboxListAdapter adapter = new CheckboxListAdapter(
      getLayoutInflater()); 

    getListView().setAdapter(adapter); 
} 

} 

SampleData.java

public class SampleData { 

private String name; 

private boolean selected; 

public SampleData(String name, boolean selected) { 
    super(); 
    this.name = name; 
    this.selected = selected; 
} 

public String getName() { 
    return name; 
} 

public void setName(String name) { 
    this.name = name; 
} 

public boolean isSelected() { 
    return selected; 
} 

public void setSelected(boolean selected) { 
    this.selected = selected; 
} 

} 

第一XML爲ListView:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" > 

<ListView 
    android:id="@android:id/list" 
    android:layout_width="match_parent" 
    android:layout_height="389dp" 
    android:layout_weight="0.79" > 
</ListView> 

<Button 
    android:id="@+id/btn_submit" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/btn_submit" /> 

</LinearLayout> 

的複選框第二XML:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="horizontal" 
android:padding="5dp" > 



<TextView 
    android:id="@+id/textView1" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" /> 

<CheckBox 
    android:id="@+id/checkBox1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" /> 

</LinearLayout> 

回答

0

傳遞選定項目的意向對象,當你開始下一個活動。從下一個活動的意圖中檢索所選項目並使用它。

Intent intent = new Intent(getBaseContext(), NextActivity.class); 
intent.putExtra("Selected_Item", selectedItemData); 
startActivity(intent) 

在接下來的活動做以下

Intent intent = getIntent(); 
String selectedItem = intent.getStringExtra("Selected_Item") 
+0

你能在這個詳細的解釋?如果我聽起來很蠢,我很抱歉,在過去的15個小時裏,我一直在閱讀很多代碼。 – elvegadro

+0

獲取當前活動中的選定值。當您準備開始下一個活動時,使用Intent和額外的數據(它是選定的值)來啓動活動。當下一個活動開始時,在onCreate中檢索選定的值,如我從意圖中顯示的那樣。並做任何你需要做的事情。 – neo

+0

我以前使用過intent,但它是用於EditText和TextView的。由於該按鈕將被放入CheckboxListActivity,意圖將在按鈕的onclick方法下,但引用我的代碼,selected_item是指SampleData? – elvegadro

相關問題