當我停留在頁面查看器上的選項卡上,並選擇一個複選框,當我點擊另一個選項卡時,我之前選擇的複選框未選中....爲什麼?爲什麼複選框沒有被選中,如果我點擊另一個選項卡?
我希望你能幫助我。
謝謝大家!!!!!
public abstract class BirraAdapter extends ArrayAdapter<Birra> implements CompoundButton.OnCheckedChangeListener
{
private List<Birra>birraList;
private Context context2;
ArrayList<Birra> objects;
public BirraAdapter(List<Birra> birraList, Context context2) {
super(context2, R.layout.single_listview_item_birra, birraList);
this.birraList = birraList;
this.context2 = context2;
}
public class BirraHolder {
public TextView birraName;
public TextView birraprezzo;
public TextView valuta_birra;
public CheckBox chkBox_birra;
public EditText edit_birra;
public String quantità;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
BirraHolder birraHolder = null;
if (row == null) {
LayoutInflater inflater = ((Activity) context2).getLayoutInflater();
row = inflater.inflate(R.layout.single_listview_item_birra, parent, false);
birraHolder = new BirraHolder();
birraHolder.birraName = (TextView) row.findViewById(R.id.name_birra);
birraHolder.birraprezzo = (TextView) row.findViewById(R.id.prezzo_birra);
birraHolder.valuta_birra = (TextView) row.findViewById(R.id.valuta_birra);
birraHolder.chkBox_birra = (CheckBox) row.findViewById(R.id.chk_box_birra);
birraHolder.edit_birra = (EditText) row.findViewById(R.id.editText_birra);
birraHolder.edit_birra.setVisibility(View.GONE);
birraHolder.edit_birra.setEnabled(false);
row.setTag(birraHolder);
} else {
birraHolder = (BirraHolder) row.getTag();
}
final Birra b = birraList.get(position);
birraHolder.chkBox_birra.setOnCheckedChangeListener(BirraAdapter.this);
final BirraHolder finalHolder = birraHolder;
birraHolder.chkBox_birra.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (finalHolder.chkBox_birra.isChecked()) {
finalHolder.edit_birra.setVisibility(View.VISIBLE);
finalHolder.edit_birra.setEnabled(true);
finalHolder.edit_birra.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
b.setQuantità(finalHolder.edit_birra.getText().toString().trim());
}
});
} else {
finalHolder.edit_birra.setVisibility(View.GONE);
finalHolder.edit_birra.setEnabled(false);
finalHolder.edit_birra.setText(null);
}
}
});
birraHolder.birraName.setText(b.getName());
birraHolder.birraprezzo.setText("" + b.getDistance());
birraHolder.valuta_birra.setText("" + b.getValuta());
birraHolder.chkBox_birra.setChecked(b.isSelected());
birraHolder.chkBox_birra.setTag(b);
birraHolder.edit_birra.setEnabled(false);
return row;
}
ArrayList<Birra> getBox() {
ArrayList<Birra> box = new ArrayList<Birra>();
for (Birra b : birraList) {
if (b.selected)
box.add(b);
}
return box;
}
}
片斷:
public class ThreeFragment extends Fragment implements
android.widget.CompoundButton.OnCheckedChangeListener {
ListView lv2;
ArrayList<Birra> birraList;
BirraAdapter biAdapter;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
ViewGroup rootView = (ViewGroup) inflater.inflate(R.layout.fragment_three, container, false);
Button mButton = (Button) rootView.findViewById(R.id.button2);
mButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
showResult(v);
}
});
//return inflater.inflate(R.layout.fragment_list2, container, false);
return rootView;
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
lv2 = (ListView)getView().findViewById(R.id.listview2);
displayBirraList();
}
private void displayBirraList() {
birraList = new ArrayList<Birra>();
birraList.add(new Birra("Paulaner", 6, "€"));
birraList.add(new Birra("Forst", 7,"€"));
birraList.add(new Birra("Peroni", 5,"€"));
birraList.add(new Birra("Corona", 5,"€"));
birraList.add(new Birra("Nastro Azzurro", 4, "€"));
biAdapter = new BirraAdapter(birraList, getContext()) {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
int pos = lv2.getPositionForView(buttonView);
if (pos != ListView.INVALID_POSITION) {
Birra b = birraList.get(pos);
b.setSelected(isChecked);
/*Toast.makeText(
getActivity(),
"Clicked on Pizza: " + p.getName() + ". State: is "
+ isChecked, Toast.LENGTH_SHORT).show();*/
}
}
};
lv2.setAdapter(biAdapter);
}
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
/*int pos = lv.getPositionForView(buttonView);
if (pos != ListView.INVALID_POSITION) {
Planet p = planetList.get(pos);
p.setSelected(isChecked);
*//*Toast.makeText(
getActivity(),
"Clicked on Planet: " + p.getName() + ". State: is "
+ isChecked, Toast.LENGTH_SHORT).show();*//*
}*/
}
public void showResult(View v) {
String result = "Selected Product are :";
int totalAmount=0;
String c="";
for (Birra b : biAdapter.getBox()) {
if (b.selected){
result += "\n" + b.name+" "+b.distance+"€"+"q.tà :"+b.getQuantità();
int quantitaInt= Integer.parseInt(b.getQuantità());
totalAmount+=b.distance * quantitaInt;
c=String.valueOf(totalAmount);
}
}
Toast.makeText(getActivity(), result + "\n" + "Total Amount:=" + totalAmount + "€", Toast.LENGTH_LONG).show();
主要
public class MainBirra extends AppCompatActivity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mainbirra);
getSupportFragmentManager().beginTransaction().
replace(R.id.fragmentContainer2, new ThreeFragment()).commit();
}
}
class Birra {
String name;
int distance;
String quantità;
String valuta;
boolean selected = false;
public Birra(String name, int distance, String valuta) {
super();
this.name = name;
this.distance = distance;
this.valuta = valuta;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getDistance() {
return distance;
}
public void setDistance(int distance) {
this.distance = distance;
}
public boolean isSelected() {
return selected;
}
public void setSelected(boolean selected) {
this.selected = selected;
}
public String getQuantità() {
return quantità;
}
public void setQuantità(String quantità) {
this.quantità = quantità;
}
public String getValuta() {
return valuta;
}
public void setValuta(String valuta) {
this.valuta = valuta;
}
}
對上帝的愛,請格式化你的代碼 –
它得到回收 – Amy
您使用onclicklistener也onCheckListener.May是你的問題here.Please檢查這個 – Rama